使用Python的PIL库进行图片合成和在图片上写字

最近需要写一个需求 根据UI设计的海报模板进行批量合成海报,经过一番谷歌大法好,查找到了几个比较好的参考文章,将使用总结一下。

首先就是安装库

1
pip install Pillow

具体使用和代码解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

from PIL import Image, ImageFont, ImageDraw

regular_font = ImageFont.truetype("PingFang-SC-Regular.ttf", size=28, encoding="utf-8") # 指定字体 如果有多个需要创建多个

im = Image.open("poster.png") # 打开文件

draw = ImageDraw.Draw(im) # 获得绘画对象 用于添加文字

teacher_title = "人生苦短我用Python"
# 在指定位置开始绘画文字
draw.text((154, 76), teacher_title, fill="#222222", font=regular_font) # 利用ImageDraw的内置函数,在图片上写入文字

# 指定覆盖照片的区域
box = (65, 194, 87, 214)

tmp_img = Image.open('star.png')
region = tmp_img
# 将覆盖的照片压缩或者放大成和上面 box指定相同大小的区域
region = region.resize((box[2] - box[0], box[3] - box[1]))
# 可以将一个包含透明的图片当做遮罩层实现 图片变圆 等操作
im.paste(region, box, region)

box = (269, 944, 481, 1158)

tmp_img = Image.open('code.jpg')
region = tmp_img
region = region.resize((box[2] - box[0], box[3] - box[1]))
im.paste(region, box)

# 显示生成的图片
im.show()
# 保存图片
im.save('new_poster.png')

参考文章:

官网Pillow

python PIL实现图片合成

知识就是财富
如果您觉得文章对您有帮助, 欢迎请我喝杯水!