Python的PIL
模块在过去的项目中对我来说一直很好,但是我注意到对于某些图像在打开和显示颜色时会被破坏,而对于其他图像则没问题。但是,保存它对两个图像都很好。有没有理由说这只适用于某些图像?
from PIL import Image
img = Image.open("banana.png")
img.convert("RGBA")
img.show()
img.save('out.png')
img1 = Image.open("banana2.png")
img1.convert("RGBA")
img1.show()
img1.save('out2.png')
此外,我只注意到两个图像之间的一个区别; banana.png
没有颜色配置文件,而banana2.png
则没有颜色配置文件。两者都位于同一目录中。我不确定这是否与问题有关;这只是一个观察。
此外,在读取图像中的像素数据时,banana.png
会返回0
,而banana2.png
会在透明像素上返回(0,0,0,0)
。再次,这只是一个观察。
任何帮助将不胜感激!
运行我们的程序而不用转换具有相同的结果:
答案 0 :(得分:1)
我猜这与在没有颜色配置文件的图片上调用convert("RGBA")
有关。 PIL可能需要这些信息。
P.S。在没有show()
致电convert()
时,您是否尝试过查看它是否仍然已损坏?
这里是PIL convert
源代码https://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.convert
答案 1 :(得分:0)
当PIL显示带show
的图像时,它会删除所有透明度。最简单的方法是传递这些透明区域中存在的任何颜色值。这取决于创建图像的应用程序。
您的第一张图片在透明区域中具有随机图像颜色,而第二张图像使用白色。