如何使用 PIL 将带有透明背景的 PNG 图像与另一张图片合并。
如何使用 PIL 将带有透明背景的 PNG 图像与另一张图片合并。
我有一个透明的 png 图像 foo.png
,并且我已经打开了另一个图像:
im = Image.open("foo2.png")
现在我需要将 foo.png
与 foo2.png
合并。
(foo.png
包含一些文本,我想在 foo2.png
上打印出那些文本)
admin 更改状态以发布 2023年5月22日
Image.paste
在背景图像也包含透明度时不能按预期工作。您需要使用真正的Alpha Compositing。
Pillow 2.0 包含了一个 alpha_composite
函数来实现这个功能。
background = Image.open("test1.png") foreground = Image.open("test2.png") Image.alpha_composite(background, foreground).save("test3.png")
编辑:两张图像都需要是 RGBA 类型。所以,如果它们是调色板等,则需要调用 convert('RGBA')
。如果背景不具有 alpha 通道,则可以使用常规的 paste 方法(应该更快)。
from PIL import Image background = Image.open("test1.png") foreground = Image.open("test2.png") background.paste(foreground, (0, 0), foreground) background.show()
.paste()
的第一个参数是要粘贴的图片。第二个参数是坐标,而秘密酱是第三个参数。它表示将用于粘贴图像的掩模。如果传递带有透明度的图像,则使用alpha通道作为掩模。
请查看文档。