【问题标题】:PIL smudges image when I overlay another image on it当我在其上叠加另一个图像时,PIL 会弄脏图像
【发布时间】:2011-08-14 11:00:41
【问题描述】:

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

【问题讨论】:

  • 您为产品和结果提供了相同的链接,我认为结果丢失了。没有它就很难知道你的抱怨是什么。
  • 另外,“产品”图片太小,没用。
  • 很抱歉,我已经进行了更改。 @agf,任何图像都确实会导致右上角的背景被“弄脏”,并且由于某种原因出现灰色背景。
  • 如果您在paste 步骤中遇到错误,您是如何获得结果图像的?请准确发布您为获得该图像所做的工作。
  • @agf,呃,对不起,我打错字了。如果我在 paste 方法中添加了一个附加参数,那就是我得到错误的时候。我对我的编辑进行了更改。我将此代码用于启动,因此我没有粘贴确切的代码,但这基本上就是我所做的。感谢您的宝贵时间!

标签: python python-imaging-library


【解决方案1】:

问题与 PIL 无关。问题是背景是.png,而您正在合成它,然后将其输出为.jpg。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2013-09-16
      • 2016-07-20
      相关资源
      最近更新 更多