郎骑竹马来,绕床弄青梅。 同居长干里,两小无嫌猜。
《长干行》,李白
# 使用Pillow为图片添加文字
# 环境配置
安装pillow: pip install pillow
# 需要导入的包,以及用到的类
from PIL import Image, ImageDraw, ImageFont
# 示例代码
from PIL import Image, ImageDraw, ImageFont
base = Image.open('Pillow/Tests/images/hopper.png').convert('RGBA')
txt = Image.new('RGBA', base.size, (255,255,255,0))
fnt = ImageFont.truetype('Pillow/Tests/fonts/FreeMono.ttf', 40)
d = ImageDraw.Draw(txt)
d.text((10,10), "Hello", font=fnt, fill=(255,255,255,128))
d.text((10,60), "World", font=fnt, fill=(255,255,255,255))
out = Image.alpha_composite(base, txt)
out.convert('RGB').save(filepathandname)
out.show()
# 整体思路
- 打开需要添加文字的图片
- 新建一个和原图片大小一样的空白图片
- 指定文字使用的字体
- 在空白图片上绘制文字
- 将原始图片与绘制过后的图片组合
PS:
- RGBA中的A为alpha值,用于设置透明度,0为完全透明,255为完全不透明。
- RGB中,(0,0,0)黑色,(255,255,255)白色。
- Linux中,字体文件一般在/usr/share/fonts中。Windows中,字体文件一般在c:\windows\fonts中。
- 合并后的图片需要转换成RGB颜色模式以后才能保存到文件。
# 具体实现Demo
参见github:https://github.com/gaodyun/PythonDemo/tree/master/0000
Demo实现了图形化的操作界面,可以选择图片,选择字体,输入添加的文字。选择图片以后,图片会载入到界面右侧,点击需要添加文字的位置。点击叠加按钮,工具会在工具所在目录保存叠加后的图片。