Python学习笔记:图文叠加

  郎骑竹马来,绕床弄青梅。   同居长干里,两小无嫌猜。

《长干行》,李白

# 使用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实现了图形化的操作界面,可以选择图片,选择字体,输入添加的文字。选择图片以后,图片会载入到界面右侧,点击需要添加文字的位置。点击叠加按钮,工具会在工具所在目录保存叠加后的图片。

参考资料: Pillow官方文档 (opens new window)