Python | 使用 Tiler 制作马赛克镶嵌画
文章首发于个人公众号:「阿拉平平」
Tiler 是一款 Python 开发的马赛克镶嵌画制作工具 。与其它镶嵌工具不同的是,Tiler 制作的镶嵌画可以适应不同形状和大小的图块(不限于方块)。本文将介绍如何使用 Tiler 制作马赛克镶嵌画。
安装
在下载项目前,需要安装好 Python3 和 pip。具体安装方法可以参考网上资料,这里就不多赘述了,完成后执行以下步骤。
下载项目:
git clone https://github.com/nuno-faria/tiler.git
安装依赖包:
pip install -r requirements.txt
目录及文件说明:
.
├── conf.py # 配置文件
├── gen_tiles.py # 图块生成脚本
├── images # 项目示例图片
├── requirements.txt # 依赖包
├── tiler.py # 图片制作脚本
├── tiles # 图块目录 (以下均为项目自带图块)
│ ├── at
│ ├── circles
│ ├── clips
│ ├── hearts
│ ├── lego
│ ├── lines
│ ├── minecraft
│ ├── plus
│ ├── times
│ └── waves
└── tiles.pickle
使用方法
本章将介绍 Tiler 的使用方法,包含以下内容:
- 自带图块
- 自定义图块
- 配置参数
自带图块
首先,准备一张需要制作成镶嵌画的图片,如下:
cake.png
图片可以放到任何目录下。出于方便,我将图片 cake.png 直接放到 images 目录下。
之后,选择需要镶嵌的图块。Tiler 自带多种图块,这里我选择 @
符号作为镶嵌图块,以下是图块 tiles/at
目录:
at
├── at.png
└── gen_at
说明:
-
at.png
是图块的原始图片。 -
gen_at
为图块目录,其中包含各种颜色的@
符号。
在 tiler 目录中执行以下命令:
python tiler.py ./images/cake.png ./tiles/at/gen_at/
执行中可以看到进度,整个过程可能会花费一些时间。完成后,tiler 目录中会生成 out.png,效果如下:
out.png
这样,镶嵌画就制作完成了。可能有童鞋会问:我不想用工具自带的图块,这个图块能不能自定义呢?
答案是可以的,Tiler 提供了生成图块的脚本 gen_tiles.py
。接下来,让我们试下用自定义图块制作镶嵌画。
自定义图块
首先,准备自定义图块的图片,如下:
drop.png
在 tiles 目录下新建目录 drop,目录结构如下:
drop
└── drop.png
在 tiler 目录下执行命令:
python gen_tiles.py ./tiles/drop/drop.png
完成后会在 tiles/drop
下生成 gen_drop
目录,之后就可以使用该图块了:
brick
├── drop.png
└── gen_drop
使用自定义图块制作的效果:
out.png配置参数
由于样例图片比较简单,所以使用默认配置就可以满足。而对于复杂的图片,可调大配置文件 tiler/conf.py
中 DEPTH
和 COLOR_DEPTH
的值。
说明:
-
DEPTH
:每种颜色的分区数,默认值 4。 -
COLOR_DEPTH
:图片包含颜色的数量,默认值 32。
写在后面
-
可以看到,Tiler 简单易用并且支持自定义图块,生成的镶嵌画效果也不错,目前在 GitHub[1] 上已经获得了 3700+ 的 star。
-
本文使用的原图 cake.png[2] 和 drop.png[3] 均来自于 Flaticon。在制作图块时,建议将颜色修改为
#F0F0F0
,否则生成的镶嵌画颜色会出现偏差。 -
在
配置参数
一节中,我只列了部分参数,一些参数还未测试。作者在conf.py
里已对每项配置加过注释,有兴趣的童鞋可以自己修改测试下。
参考资料
[1] GitHub:https://github.com/nuno-faria/tiler
[2] cake.png:https://www.flaticon.com/free-icon/cake_1102780
[3] drop.png:https://www.flaticon.com/free-icon/drop_179529