Python PIL:在不破坏背景像素的情况下将图像粘贴到透明图像上 我试图用PIL将两幅图像与中间的心脏图像结合起来,但是它总是从自身后面移除像素,并用完全透明的方式替换它们,破坏它下面的图像。如何在不执行此操作的情况下将图像粘贴/覆盖到图像上的特定点

Python PIL:在不破坏背景像素的情况下将图像粘贴到透明图像上 我试图用PIL将两幅图像与中间的心脏图像结合起来,但是它总是从自身后面移除像素,并用完全透明的方式替换它们,破坏它下面的图像。如何在不执行此操作的情况下将图像粘贴/覆盖到图像上的特定点,python,image,python-imaging-library,Python,Image,Python Imaging Library,当前代码: heart = Image.open("Heart.png") shrimp = Image.open("Shrimp_Jackson.jpg") bg = Image.open("bg.png").resize((400,250)) bg.paste(shrimp, (0,0)) bg.paste(shrimp, (200,0)) bg.paste(heart, (60, 0)) bg.save("Output

当前代码:

heart = Image.open("Heart.png")
shrimp = Image.open("Shrimp_Jackson.jpg")
bg = Image.open("bg.png").resize((400,250))

bg.paste(shrimp, (0,0))
bg.paste(shrimp, (200,0))
bg.paste(heart, (60, 0))
bg.save("Output.png")
结果是:
你的心脏可能没有透明的背景,只有白色的背景

下载,然后使用magick命令将您必须的白色不透明背景转换为透明背景:

magick convert heart.png -transparent white heart2.png

然后在你的代码中使用这个
heart2.png
,正如@HansHirse建议的
bg.paste(heart,(60,0),mask=heart)

bg.paste(heart,(60,0),mask=heart)
,如果
heart
有合适的alpha通道(用于白色背景).@HansHirse
ValueError:bad transparency mask
如何确保它具有正确的alpha通道?我不想要背景,如果有的话是透明的。@HansHirse好的,我用一个图像编辑程序创建了一个新的心脏图像,并像你说的那样使用了面具,效果很好。非常感谢。