当我在其上覆盖另一个图像时,PIL会污染图像

时间:2011-08-14 02:40:31

标签: python python-imaging-library

我正在使用以下代码使用PIL将图像叠加到另一个图像上

path = "/home/blah.png"
background = Image.open(path)
product = Image.open("/home/51tmBaivYhL._SL75_.jpg")
background.paste(product, (20,40))
background.save("/home/newImage.jpg")

这些是我用作背景http://i.imgur.com/bwPFT.png,产品http://i.imgur.com/Ig6qV.jpg的图片,这就是结果显示为http://i.imgur.com/JfGoS.jpg

感谢我能得到的任何帮助。

感谢。

编辑:此外,当我尝试background.paste(product, (20,40), product)时,我收到错误“ValueError:bad transparency mask”

2 个答案:

答案 0 :(得分:5)

这个问题与PIL无关。问题是背景是一个.png,你正在编写它,然后将它输出为.jpg。

.png是无损的,非常适合像你的背景这样的合成图像。 .jpg是有损的,非常适合照片等自然图像。当您将背景输出为.jpg时,它将包含压缩工件,您称之为“污迹”。

将最终图像输出为.png。它将比.jpg更多字节,但看起来会更好。

答案 1 :(得分:2)

您正在打开具有透明度的背景PNG图像,并将结果保存为没有透明度的.JPG。透明区域中的颜色可能是您用于创建PNG的图像编辑器中的残留物。