PIL 不保存透明度

问题描述 投票:0回答:3
from PIL import Image

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

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

我做错了什么?

python png python-imaging-library
3个回答
31
投票

可能图像已被索引(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”必须被视为透明。


7
投票

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

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

0
投票

另外,请记住使用支持 RGBA 的格式。 “.jpg”不起作用,这就是为什么你必须使用“.png”

© www.soinside.com 2019 - 2024. All rights reserved.