Photo-Maker 是一个用于生成和制作各种有趣的图片脚本, 使用 Python 编写,能运行在Python2 & Python 3 之上。但均依赖 PIL 库。请自行安装。除了 PIL 之外无需引入其他依赖。
目前引入的功能有:
- 微信朋友圈心❤️型九宫格图
- 蒙太奇(马赛克)照片
- 拆分图 (可以将一张图拆分为M x N 张图)
- ASCII 图 将一张图转化为ASCII码
请执行 python photo-maker.py -h
查看帮助。
usage: photo-maker.py [-h] {heart,split,mosaic,ascii} ...
A Dead Simple Photo Maker
===========================================================
______ _ _ ___ ___ _
| ___ \ | | | | \/ | | |
| |_/ / |__ ___ | |_ ___ ______| . . | __ _| | _____ _ __
| __/| '_ \ / _ \| __/ _ \______| |\/| |/ _` | |/ / _ \ '__|
| | | | | | (_) | || (_) | | | | | (_| | < __/ |
\_| |_| |_|\___/ \__\___/ \_| |_/\__,_|_|\_\___|_|
The most commonly used photo-maker commands are:
heart Use multi image files to generate a heart picture
split Split one image into A x B multi grid pictures
mosaic Generate a mosaic photo by use tiles
ascii Convert an image to ascii text
positional arguments:
{heart,split,mosaic,ascii}
optional arguments:
-h, --help show this help message and exit
Source Code: http://github.com/shellvon/photo-maker
所有的例子输出均放在了 examples 目录下,可自行查看。
usage: photo-maker.py heart [-h] [-d DIR] [--autofill] [--padding PADDING]
[--size SIZE] [-s]
[-e EXTENSIONS [EXTENSIONS ...]] [--intermediate]
[-o OUTPUT]
微信心型九空格图片,一共是分享的9张,每一张也是9格图
如下图,需要填满的位置是X所在的位置:
Fig 1: Fig 2: Fig 3:
+---+---+---+ +---+---+---+ +---+---+---+
| 1 | 2 | 3 | | 1 | 2 | 3 | | 1 | 2 | 3 |
+-----------+ +-----------+ +-----------+
| 4 | 5 | x | | x | 5 | x | | x | 5 | 6 |
+-----------+ +-----------+ +-----------+
| 7 | x | x | | x | x | x | | x | x | 9 |
+-----------+ +-----------+ +-----------+
Fig 4: Fig 5: Fig 6:
+---+---+---+ +---+---+---+ +---+---+---+
| x | x | x | | x | x | x | | x | x | x |
+-----------+ +-----------+ +-----------+
| x | x | x | | x | x | x | | x | x | x |
+-----------+ +-----------+ +-----------+
| 7 | x | x | | x | x | x | | x | x | 9 |
+-----------+ +-----------+ +-----------+
Fig 7: Fig 8: Fig 9:
+---+---+---+ +---+---+---+ +---+---+---+
| 1 | 2 | x | | x | x | x | | x | 2 | 3 |
+-----------+ +-----------+ +-----------+
| 4 | 5 | 6 | | x | x | x | | 4 | 5 | 6 |
+-----------+ +-----------+ +-----------+
| 7 | 8 | 9 | | 7 | x | 9 | | 7 | 8 | 9 |
+-----------+ +-----------+ +-----------+
^^^
|
+----- 每一张图的间隔称之为 Padding
因此一共需要的图片张数是: (3 * 2) + 5 + (8 * 2) + 9 + (1 * 2) + 7 = 45 张图.
optional arguments:
-h, --help show this help message and exit
-d DIR, --dir DIR directory of the images, default is current dir
--autofill autofill pictures when picture is too few, default is
False
--padding PADDING padding size between each grid, default is 10
--size SIZE output image size,format is AxB, default size is:
1920x1920
-s, --shuffle shuffle the image file list
-e EXTENSIONS [EXTENSIONS ...], --extensions EXTENSIONS [EXTENSIONS ...]
image file type, default is png,jpg,jpeg
--intermediate save intermediate file, default is False
-o OUTPUT, --output OUTPUT
output image filename, default is collage.png
由于马赛克需要许多小图,因此此脚本默认提供了800+张emoji表情用于当tile,您可以自己提供自己的图片文件夹进行制作tile.需要注意的是文件不要太大,否则会很慢。
源图片来自: examples/sharp.png
------------------------------------------------
--/qqQUUzx/|)))))))))))))))))))))))))))))(\jvUJU
--n$$kYf(1[_~<>>>>>>>>>>>>>>>>>>>>>>>>><<+?1)\vO
--n@Q\1]!::Ill!!!!!!!!!!!!!!!!!!!!!!!!!!lI;,I_{(
--nC({<:i>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Il}
--(|{_l<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>i
--{(}~<<<<<<<<<<<<<<<<~~~~<~<<<~~~~~<~<<<<<<<<<>
--{)}_~~~~~~~~~~~~~~~+: ;~~~~_` I~~~~~~~~~~<
--{({-+++++++++++++++_. .~++++> .~+++++++++++
--{({-_______________! ,____-: ;____________
--{(1]---------+~~~~+` l~~~~~. !~~~<?------?
--{|1{[????????" ]?????]}
--{|1{}}}[[]]]]~<<<~^ I<<<<~. !<<<<<]]][}}}{
--{\){{{{{{{{{}}}}}}. '][[[[_ `[}}}}{{{{{{{{{
--{\)1{{{{{{{1]]]]]! :]]]][, ;]]]]{{{{{{{{{1
--1\(11111111? ~111111111
--1/()1111111}++++! ,++++_, :+++++[111111111
--1/())))))))))))|, _))))|. ?)))))))))))))))
--1t|()))))))))))1 `))))(- ^))))))))))))))))
--1t|())))))))))(i >))))|" ~)))))))))))))))(
--)t\((((((((((((}}}})(((()}}}})((((((((((((((((
--fx\|(((((((((((((((((((((((((((((((((((((((((|
--nkj\|||||||||||||||||||||||||||||||||||||||||\
--n$*c/\||||||||||||||||||||||||||||||||||||||\r
现在, 您可以自己指定grey-scale来输出你要的照片了.