PIL叠加图像时模糊了原图

4 投票
2 回答
1746 浏览
提问于 2025-04-16 23:34

我正在使用以下代码,通过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")

这些是我用作背景的图片:https://i.stack.imgur.com/wuJu1.png,还有产品图片:https://i.stack.imgur.com/Vg0Vh.jpg,这是我得到的结果:https://i.stack.imgur.com/A2Rzu.jpg

如果能得到任何帮助,我会非常感激。

谢谢。

补充:另外,当我尝试使用 background.paste(product, (20,40), product) 时,出现了错误“ValueError: bad transparency mask”。

2 个回答

2

你正在打开一个带透明背景的PNG图片,然后把它保存成没有透明度的.JPG格式。透明区域的颜色可能是你用来制作这个PNG的图像编辑软件留下的残留色彩。

5

这个问题和PIL没有关系。问题在于你的背景是一个.png格式的图片,而你把它合成后输出成了.jpg格式。

.png格式是无损的,非常适合像你这种合成的图像。而.jpg格式是有损的,更适合自然照片。当你把背景输出为.jpg格式时,它会出现压缩后留下的瑕疵,也就是你所说的“模糊”。

建议你把最终的图片输出为.png格式。虽然它的文件大小会比.jpg大,但看起来会更好。

撰写回答