PIL不能保存透明度

时间:2009-08-05 14:50:26

标签: python png python-imaging-library

from PIL import Image

img = Image.open('1.png')
img.save('2.png')

第一张图片有透明背景,但当我保存时,透明度消失了(背景为白色)

我做错了什么?

2 个答案:

答案 0 :(得分:30)

图像可能已编入索引(PIL中的模式为“P”),因此透明度未在PNG Alpha通道中设置,而是在元数据信息中设置。

您可以使用以下代码获取透明背景调色板索引:

from PIL import Image

img = Image.open('1.png')
png_info = img.info
img.save('2.png', **png_info)

图片信息是一个字典,因此您可以检查它以查看它具有的信息:

例如:如果您打印它,您将获得如下输出:

{'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)}

保存在那里的信息将根据创建原始PNG的工具而有所不同,但对您来说重要的是“透明度”键。在示例中,它说调色板索引“7”必须被视为透明。

答案 1 :(得分:4)

您始终可以将类型强制为“RGBA”,

img = Image.open('1.png')
img.convert('RGBA')
img.save('2.png')