15

这是我的问题:

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

好吧,通过我的图像,您可以看到不同之处。
我的问题是:如何正确转换它?

图片:原来的

结果:结果

注意:原始图像有一个半透明的辉光,结果有一个纯绿色的“辉光”

4

4 回答 4

9

此处报告了此问题:

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

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

于 2012-09-17T18:35:43.483 回答
5

不幸的是,您的 PNG 图像是 PIL 不能很好处理的一种类型 - 带有 alpha 通道的调色板图像。当您打开图像时,alpha 会被丢弃,并且无法取回。

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

于 2012-09-17T18:01:06.937 回答
1

你可以使用scipy.misc.imread

img = scipy.misc.imread(filename, mode='RGBA')
img = Image.fromarray(img)
于 2017-04-07T20:07:45.597 回答
0

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

PIL 不会单独为您的图像添加透明度。

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

于 2012-09-17T16:44:27.427 回答