带有alpha的PIL粘贴图像显示为褪色

时间:2013-09-04 20:51:56

标签: python python-imaging-library

我正在使用多个图像,我希望将它们叠加在一起以创建单个图像。但是,在使用它们时,我注意到如果图像已经具有透明度(alpha!= 255),则图像的这一部分显得褪色。如果没有透明度,一切都很好。

我将我正在使用的其中一个图像保存到PNG中,并创建了一小段代码来复制问题。基本上,我正在创建一个具有透明背景的新图像,然后将图像粘贴在顶部:

from PIL import Image

img=Image.new('RGBA', (946,627), (0,0,0,0))
overlayImage = Image.open('drawing.png')
img.paste(overlayImage, (0,0), overlayImage)
img.save('drawing-pasted.png')

完成后,drawing-pasted.png如下所示:

drawing-pasted.png

但是原始绘图(drawing.png)看起来像这样:

drawing.png

(手动裁剪图像以显示细节。)原始图像圆圈填充颜色的alpha值为179.

有没有其他人遇到过这个,我做错了什么?

非常感谢。

1 个答案:

答案 0 :(得分:0)

你正在创建的背景是黑色和完全透明,原始是蓝色但是alpha为179,所以你有2个像素(0,0,0,0)和(0,0,255,179)假设100%蓝色 - 因为你粘贴图像将是超过背景所以将使用新图像的alpha允许(255-179)/ 255或约30%黑色。 (N.B。背景的alpha没有区别,因为它在新图像的后面)

您可以使用overlayImage.putalpha将alpha设置为从图像开始而不是黑色背景。