如何使用 PIL 将带有透明背景的 PNG 图像与另一张图片合并。

8 浏览
0 Comments

如何使用 PIL 将带有透明背景的 PNG 图像与另一张图片合并。

我有一个透明的 png 图像 foo.png,并且我已经打开了另一个图像:

im = Image.open("foo2.png")

现在我需要将 foo.pngfoo2.png 合并。

(foo.png 包含一些文本,我想在 foo2.png 上打印出那些文本)

admin 更改状态以发布 2023年5月22日
0
0 Comments

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 方法(应该更快)。

0
0 Comments

from PIL import Image
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0), foreground)
background.show()

.paste() 的第一个参数是要粘贴的图片。第二个参数是坐标,而秘密酱是第三个参数。它表示将用于粘贴图像的掩模。如果传递带有透明度的图像,则使用alpha通道作为掩模。

请查看文档

0