Python Transparet像素在PIL中粘贴为黑色

Python Transparet像素在PIL中粘贴为黑色,python,python-imaging-library,transparency,Python,Python Imaging Library,Transparency,我粘贴了一个带有透明像素的图像,但它们在最终图像中是黑色的 img = Image.new('RGBA', (100, 100), "white") arbol16 = Image.open("arbol16.png") img.paste(arbol16,( 0, 0, 16, 16)) img.show() arbol16.png图像文件: 我想你(可以理解)被img.show()显示的内容弄糊涂了,我认为这是错误的(事实上可能是一个bug)。在我的Windows系统上,会显示一个临

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

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

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

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

img.show()
arbol16.png
图像文件:

我想你(可以理解)被
img.show()
显示的内容弄糊涂了,我认为这是错误的(事实上可能是一个bug)。在我的Windows系统上,会显示一个临时的.BMP图像,看起来透明像素是黑色的

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


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

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

由于图像格式的工作方式,即使是100%透明像素也有关联的颜色,即使渲染时不使用该颜色。通常,查看图像的方法无法很好地处理alpha,因此请显示相关的颜色。不知道你是不是在打这个。