import Image
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0), foreground)
background.show()
.paste()
第一个参数是要粘贴的图像。第二个是坐标,秘密调味料是第三个参数。它表示将用于粘贴图像的遮罩 。如果通过透明图像,则Alpha通道将用作遮罩。
检查文档 。
0
import Image
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0), foreground)
background.show()
.paste()
第一个参数是要粘贴的图像。第二个是坐标,秘密调味料是第三个参数。它表示将用于粘贴图像的遮罩 。如果通过透明图像,则Alpha通道将用作遮罩。
检查文档 。
0
当背景图像还包含透明度时, Image.paste
无法正常工作。您需要使用真正的Alpha合成 。
枕头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通道,则可以使用常规的粘贴方法(应该更快)。
0
也可以使用混合:
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
blended = Image.blend(im1, im2, alpha=0.5)
blended.save("blended.png")
0
正如olt已经指出的那样,当源和目标都包含alpha时, Image.paste
无法正常工作。
请考虑以下情形:
两个测试图像都包含alpha:
layer1 = Image.open("layer1.png")
layer2 = Image.open("layer2.png")
像这样使用Image.paste
合成图像:
final1 = Image.new("RGBA", layer1.size)
final1.paste(layer1, (0,0), layer1)
final1.paste(layer2, (0,0), layer2)
产生以下图像(红色像素的叠加部分完全取自第二层。像素未正确混合):
使用Image.alpha_composite
合成图像, Image.alpha_composite
所示:
final2 = Image.new("RGBA", layer1.size)
final2 = Image.alpha_composite(final2, layer1)
final2 = Image.alpha_composite(final2, layer2)
产生以下(正确)图像:
0
我有一个透明的png图像“ foo.png”,并且用
现在我需要将foo.png与foo2.png合并。
(foo.png包含一些文本,我想在foo2.png上打印该文本)