Python 使用 PIL Image 叠加/合成 透明的PNG图片

本例子实现实现PIL Image 叠加/合成透明的PNG图片。
使用 PIL的原因是因为叠加/合成速度快,如果使用OpenCV的方法,叠加/合成效率比较低。

测试素材准备

背景图 Python-logo-s.png
Python-logo-s
(可鼠标右键点击保存)

需要叠加/合成的透明PNG图 ls-logo.png
ls-logo
(可鼠标右键点击保存)

实现代码

把两张测试图片,放在与程序文件在同一目录下

输入以下代码

# welcome https://lingshunlab.com

from PIL import Image # 加载PIL库的Image

bg  = Image.open('Python-logo-s.png').convert('RGB') # 背景图片,需要读取为RGB,3通道的格式
layer  = Image.open('ls-logo.png').convert('RGBA') # 叠加的透明PNG图片,需要读取为RGBA,4通道的格式

bg.paste(layer, (300,250), layer) # 在bg图像上叠加/合成layer图像

bg.size # bg图像的大小

bg # 在Jupyter-lab上直接预览合成效果
#如果是不是使用Jupyter lab 进行代码测试,可使用OpenCV的方法显示在桌面显示图像

最终效果

Juptyer lab 运行的结果如下:
WX20221209-1757412x