201702 月发表在 分享

02技术宅的浪漫方式:用多张小图片拼出大图片用的工具

之前听同学说有技术宅用许多和女朋友一起拍的照片拼出一幅的爱心图案(喂喂。这个剧本错了!技术宅可以有女朋友吗?),非常浪漫!于是我写了这个程序 - biaobai。这个程序可以用多张小图片拼出一幅大图片。比如,你可以用你和女神的照片合成一张大图(比如一个爱心),如果把大图放大,就会发现这张大图是由许多你和你的女神的点点滴滴组成哒o(^▽^)o

2月12日补充:后来得知,这种拼图叫做马赛克拼图

举个栗子

我准备的小图片们:

pictures.png

参考这个形状...

octocat.png

合成出的大图~

output.png

怎么使用

源码我已经放在 Github 上了:https://github.com/imzyxwvu/biaobai/

在编译源码之前,需要先安装依赖:

apt-get install libsqlite3-dev libpng16-dev libjpeg-dev

这个程序使用 libgd (https://github.com/libgd/libgd) 处理图像。请自行编译安装 libgd。然后使用如下命令编译本程序:

make

这个工具包含两条命令:./register 和 ./compose。前者可以将小图片添加到图库中,在将小图片添加到图库的过程中,./register 会自动将小图片剪裁为正方形,并计算出图片的颜色特征;后者可以参考一幅图片,利用图库中的小图,合成出一幅 PNG 大图,大图会通过 stdout 输出。

假设你将所有需要的小图都已经保存在了 images 文件夹中,那么便可以通过这条命令将小图全部添加到图库 images.db 中:

./register images.db images/*

然后使用这条命令,就可以参考 reference.jpg 生成你需要的大图了:

./compose images.db reference.jpg > output.png
免责声明:这个工具没有经过实战的考验!对于本工具造成的不良后果(比如说表白失败啦),作者一概不承担任何责任。
zyxwvu
UNDER CONSTRUCTION