PIL未保存透明度
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”应该被当作透明处理。