当我在图像上叠加另一张图像时,PIL会使图像模糊。

4

我正在使用以下代码使用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”。

你给出了产品和结果相同的链接,我认为结果缺失了。没有结果很难知道你的投诉是什么。 - Mark Ransom
此外,“产品”图像太小,几乎没有用处。 - agf
抱歉,我已经做出了更改。@agf,任何图像都会导致背景在右上方变得“模糊”,并且由于某种原因出现了灰色背景。 - iman453
如果您在“粘贴”步骤中出现错误,那么您是如何得到结果图像的呢?请准确地发布您获取该图像所做的所有操作。 - agf
@agf,抱歉,我到处打错字。如果我向粘贴方法添加了一个额外的参数,那么就会出现错误。我已经对我的编辑进行了更改。我正在使用这段代码作为启动代码,因此不会粘贴完整代码,但本质上就是这样做的。感谢您的时间! - iman453
2个回答

5
该问题与PIL无关。问题在于背景是.png格式,你正在合成它并将其输出为.jpg格式。
.png格式是无损的,非常适合像背景这样的合成图像。.jpg格式是有损的,非常适合像照片这样的自然图像。当你将背景输出为.jpg格式时,它会包含压缩伪影,也就是所谓的“污点”。
请将最终图像输出为.png格式。虽然文件大小会比.jpg大,但看起来会更好。

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接