PIL未保存透明度

15 投票
3 回答
16052 浏览
提问于 2025-04-15 13:24
from PIL import Image

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

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

我哪里做错了?

3 个回答

0

另外,记得使用支持RGBA格式的图片。像“.jpg”这种格式是不能用的,所以你得用“.png”格式。

7

你可以随时把类型强制设置为“RGBA”。

img = Image.open('1.png')
img = img.convert('RGBA')
img.save('2.png')
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的工具不同而有所变化,但对你来说最重要的是“transparency”这个键。在这个例子中,它说明调色板索引“7”应该被当作透明处理。

撰写回答