【问题标题】:Transparet pixels are being pasted as black in PIL透明像素在 OIL 中作为黑色传递
【发布时间】:2019-09-15 21:19:31
【问题描述】:

我粘贴了一张带有透明像素的图像,但在最终图像中它们是黑色的

img = Image.new('RGBA', (100, 100), "white")

arbol16 = Image.open("arbol16.png")

img.paste(arbol16,( 0, 0, 16, 16))

img.show()

arbol16.png图片文件:

【问题讨论】:

  • 由于图像格式的工作方式,即使是 100% 透明像素也有关联的颜色,即使在渲染时不使用它也是如此。很多时候,查看图像的方法不能很好地处理 alpha,因此显示相关的颜色。不知道这是否是你在这里打的。

标签: python python-imaging-library transparency


【解决方案1】:

paste 方法不考虑它所粘贴的图像的 alpha;您需要添加一个mask 参数来控制它。如果您要粘贴的图像是RGBA,则只需传递两次即可。

arbol16 = arbol16.convert("RGBA")
img.paste(arbol16, (0, 0, 16, 16), arbol16)

【讨论】:

    【解决方案2】:

    我认为您(可以理解)对 img.show() 显示的内容感到困惑——我认为这是错误的(实际上可能是一个错误)。在我的 Windows 系统上,会显示一个临时的 .BMP 图像,并且看起来透明像素是黑色的。

    但是,如果您在末尾添加类似 img.save('arbol16_mod.png') 的行,然后通过在某些图像文件查看程序(例如 Paint、Windows Photo Viewer 或 Photoshop)中手动打开来查看 那个图像文件,结果是正确的。

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2019-03-18
      • 2011-03-26
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多