昨天豆瓣的图,p了好长时间。想到一个点子,根据文字的多少长短自适应的将文字放在图片正中央的位置,生成图片。
先准备好一个下载图片的程序download_img.py:
download_img.py
大致想法:PIL可以获取初始位置,和offset的位置,再加上计算一下每行字的长度,就可以将文字在图片中居中。
示意图
从图中我们可以看到,文本的插入坐标可以用这样的公式进行计算:(底图宽-文本宽) / 2,那问题又来了,文本宽我们怎么得到呢?
在PIL中,我们可以用draw.textsize获取文本所占的大小,返回是个元组:(宽,高),像这样:
txtSize = draw.textsize(text, imageFont)
修改一番程序之后,实现了文字居中效果:
文字居中
再测试一下多行文字:
多行文字居中
多行文字左对齐,并整体居中的效果还不错。