使用PIL转换带透明度的灰度PNG

4 投票
2 回答
4664 浏览
提问于 2025-04-17 08:25

我在用PIL处理带透明度的png图片时,如果把它们转换成灰度图,就会出现损坏的情况。为什么会这样呢?

这是我的代码:

input = Image.open('input.png')
output = ImageOps.grayscale(input)
output.save('output.png', **input.info)

输入

http://imgur.com/a/m50p6

输出

http://imgur.com/a/m50p6

有没有办法解决这个问题呢?

2 个回答

1

我也遇到过这个问题。唯一找到的解决办法是先把图片转换成'LA'格式,然后再转换回'RGBA'格式。

你可以试试这个方法:

Image.open('input.png').convert('LA').convert('RGBA')

我当时是想在tkinter画布上显示这个带透明度的灰度PNG图片,不过我觉得这个方法可能也适合用来保存输出。

9

你可以使用 convert 方法,配合亮度的小技巧:

Image.open('input.png').convert('LA').save('output.png')

撰写回答