前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有爱的Python项目:将图片转成像素风

有爱的Python项目:将图片转成像素风

作者头像
Crossin先生
发布2021-03-25 16:25:48
3.8K0
发布2021-03-25 16:25:48
举报
文章被收录于专栏:Crossin的编程教室

来源:量子位(QbitAI)

作者:郭一璞

大家好,欢迎来到 Crossin的编程教室 !

各位一定见过“像素风”的图片,这种图片具体很浓的卡通风格。如果用各种色块/小图/字符拼出大的图片,构建一个像素风的世界,就像《我的世界》里一样,肯定非常有趣。

像素风的图片还可以拿来做拼贴画、十字绣等装饰。有很强的实用性。

今天我们就来给大家分享一个可以将图片转为“像素风”的一个项目。

在这个名为 tiler 的 GitHub 开源项目里,你可以自动实现这一切。它在 Github 上已收获 4400 星,广受好评。

https://github.com/nuno-faria/tiler

Tiler,意味瓦工,也就是用各种小元素作为 “瓦”,搭建出一张大图片。

项目预设了不少 “瓦”:有乐高、加号、圆形、@符号、心形、乘号、波浪线、横竖条、《我的世界》中的各种格子,以及曲别针形:

另外还有一组万圣节主题 icon,包括各种南瓜灯、小鬼头、蝙蝠、猫头鹰:

这些不同的 “瓦” 都可以设定大小颜色和角度,以适应不同的画面规格。

另外,你还可以设定整个画面中由多少种颜色构成和 “瓦片” 的大小,也就是马赛克的模糊程度。

你可以用不同材质和大小的 “瓦片”,拼接出各种图案。

比如梵高的《星空》,项目中展示了 10×10、25×25、50×50 三种圆形拼成的规格:

△ 10×10 的《星空》
△ 25×25 的《星空》
△ 50×50 的《星空》

有没有在 PS 里拖动高斯模糊半径控制条的感觉?

你也可以设置让构成图片的 “瓦片” 大小不一

也可以试试拿乐高积木来拼:

放大看,斑斓的星空,是这样的:

一个个小砖块,布满了乐高积木表面特有的圆形凸起。

嗯,要是真有这么大一片乐高,想想就爽歪歪。

(此处冲去乐高门店下单,金币 - 1000)

还有乘号版:

如果放大,你就会发现,这就是十字绣的图样啊!

这么大一副十字绣,色彩艳丽,斑斓交错,一看就可以玩很久,退休老母亲看到两眼发光。

就是绣完挂在家里,也和你北欧风 / 极简风 / 莫兰迪风 / 自如风的房间非常搭配,成为全场最吸睛的装饰画。

要是木有耐心,可以考虑一个迷你版:

还可以做成《我的世界》的样子

星空的细节如下:

你们能认识这些砖块都是啥么……

运行指南

如果想在自己电脑上运行的话,除了 Python 3 和 pip,你还需要装 OpenCV、numpy 和 tqdm。

之后,靠命令行就可以解决了。

你需要设置几个参数:

在 gen_tiles.py 中设置:

  • DEPTH:每个颜色通道中的分割数量 (ex: DEPTH = 4 -> 4 * 4 * 4 = 64 colors);
  • ROTATIONS:旋转列表,以度为单位,应用在原始图像上 (ex: [0, 90])。

在 tiler.py 中设置:

  • COLOR_DEPTH:每个颜色通道中的分割数量 (ex: COLOR_DEPTH = 4 -> 4 4 4 = 64 colors);
  • RESIZING_SCALES:应用于每个图块的比例 (ex: [1, 0.75, 0.5, 0.25]);
  • PIXEL_SHIFT:移动以创建每个框的像素数 (ex: (5,5)); if None, shift will be the same as the tile dimension);
  • OVERLAP_TILES:如果构成图像的 “瓦片” 可以重叠;
  • RENDER:渲染图像;
  • POOL_SIZE:多处理池大小;
  • IMAGE_TO_TILE:图像到瓦片(如果作为第一个参数传递则忽略);
  • TILES_FOLDER:瓦片文件夹(如果作为第二个 arg 传递则忽略);
  • OUT:结果图像文件名。

脑洞丰富的作者

这个项目的作者 ID 叫 nuno-faria,除了这个 Tiler 项目之外,他还开源过不少有趣的东西。

有一个用 Java 写的推箱子:

像素风满满的桌面足球:

还有俄罗斯方块、弹球等许多种,个个都还蛮有意思的~

如此极具创造力的作者,实在令人佩服,有兴趣的话,可以到其主页深入了解一下:

https://github.com/nuno-faria

大家可以下载项目,亲手做一副你自己的像素画来当头像。

如果文章对你有帮助,欢迎转发/点赞/收藏~


_往期文章推荐_

Python+OpenCV十几行代码模仿世界名画


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • △ 10×10 的《星空》
  • △ 25×25 的《星空》
  • △ 50×50 的《星空》
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档