大家好,我是热爱艺术的开源小妹。
不知道大家是不是经常看到一些像素风格的头像或者表情包,比如这样:
不过小妹还想给你看个更厉害的,像素风的梵高名作《星月夜》:
如果把细节放大,你会发现这不是普通的像素点,而是一个个乐高基础积木块拼成的,比如右上角的月亮:
厉害吧,今天小妹就给大家分享一个开源项目,轻轻松松地创造出这样一幅用乐高拼成的世界名画。
项目简介
Tiler 是一个使用使用图像构建图像的开源项目,使用 Python 开发。就如同它的名字一样,Tiler 就像一个贴砖工一样,基于一张原始图像,使用一个个小小的瓷砖(图块)铺满墙面形成一个像素风的大图像。不同于其他的马赛克工具,Tiler 可以使用不同形状和尺寸的小图像来绘制图片,比如圆圈、线条、波浪、十字绣、乐高积木、我的世界积木、回形针、字母等等。
项目安装
因为 Tiler 是一个 Python 项目,所以要在 Python 环境下运行,并且需要安装一些必要的依赖。
1 | -- 下载项目 |
简单介绍一下项目的构成。
- tiles:文件夹下保存了几类预置的图块,可以直接使用这些图块来生成图片
- conf.py:配置文件,可以调节生成图像的参数
- gen_tiles.py:用于自定义生成图块
- tiler.py:图像生成主程序
项目使用
参数配置
首先配置一下 conf.py 这个配置文件里的参数,让我们生成期望的图片。这里介绍一下几个关键的参数:
- COLOR_DEPTH:每个颜色通道中的细分数(例如:DEPTH = 4 -> 4 * 4 * 4 = 64种颜色),可以理解为数值越大色彩更丰富
- RESIZING_SCALES:应用于每个图块的缩放比例(例如:[1, 0.75, 0.5, 0.25],就会用四种不同大小的图块来生成新的图片)。实际使用中,根据原图像的实际尺寸,来调整这个参数的大小,以达到不同的效果。
- PIXEL_SHIFT:用于创建每个框的像素移位数,这里最好设置为 None,否则按照默认配置,图块之间会有缝隙
- POOL_SIZE:线程池大小,CPU 性能强的话可以设置大一些(按照默认的设置,小妹的笔记本风扇都要起飞了)
- OUT:输出文件的名称
执行程序
我配置的参数如下:
1 | COLOR_DEPTH = 64 |
图像的生成很简单,一个命令就搞定了:
1 | python3 tiler.py 原始图片文件路径 图块文件夹路径 |
比如,我要使用乐高图块将文件 Starry_Night.jpg 处理为像素风的图片,:
1 | python3 tiler.py ./Starry_Night.jpg ./tiles/lego/gen_lego_h |
稍等一下就好了,两张图效果对比如下:
不要问小妹为什么和文章开始的星月夜不太一样,因为小妹没有找到对应的原版图片o(╥﹏╥)o
小妹继续恶搞一下,用曲别针来生成一次,结果是这样:
emmm……奇怪的画风
总结
好啦,这就是 Tiler,一个可以让你自由发挥绘制像素风格的工具。感兴趣的朋友们可以试试哈!
1 | 项目地址: |