PIL图像模式“P” - > “RGBA”

时间:2012-09-17 15:32:25

标签: python python-imaging-library converter mode

这是我的问题:

import Image
im = Image.open("1.png")
im.show()
print im.mode
im.convert("RGBA").save("2.png")

嗯,通过我的形象,您可以看到差异 我的问题是:如何正确转换它?

图片:original

结果:result

注意:原始图像具有半透明的光晕,结果具有稳定的绿色“发光”

4 个答案:

答案 0 :(得分:6)

此问题已在此处报告:

https://bitbucket.org/effbot/pil-2009-raclette/issue/8/corrupting-images-in-palette-mode

2012年3月,一条评论说它现在已经在PIL的开发版中修复了。最新发布的版本是1.1.7,因此在1.2发布之前修复程序将无法使用。 PIL缓慢更新非常,所以不要指望很快就会出现。

答案 1 :(得分:4)

不幸的是,您的PNG图像是PIL无法很好处理的类型 - 带有Alpha通道的调色板图像。打开图像时,alpha会被丢弃,无法将其恢复。

这与通常的调色板透明度不同,其中调色板的一个索引用于表示完全透明的像素。

答案 2 :(得分:1)

您可以使用scipy.misc.imread

img = scipy.misc.imread(filename, mode='RGBA')
img = Image.fromarray(img)

答案 3 :(得分:0)

您的问题是您没有提供有关PIL应该用作ALPHA频道来源的信息。

PIL不会自己为图像添加透明度。

您希望图片的哪一部分透明?