皮尔图像.打开创建损坏的图像

2024-09-28 17:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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.pngbanana2.png

显示的图像

tmpi8l0e6nk.pngtmpnr61e6ib.png

保存的图像

out.pngout2.png


此外,我只注意到这两个图像之间的一个区别;banana.png没有颜色配置文件,而{}有。两者也位于同一目录中。我不确定这是否与问题有关,这只是一个观察。在

另外,当读取图像中的像素数据时,banana.png返回0,而banana2.png返回透明像素上的(0,0,0,0)。同样,这只是一个观察。在

原始文件信息

Screenshot

任何帮助都将不胜感激!在


编辑:

运行我们的程序而不进行转换的结果是相同的:

显示的图像:

tmpj6g2tkbk.pngtmppq7nt2zg.png


Tags: 图像imageconvertimgpilpng颜色save
2条回答

我的猜测是与在没有颜色配置文件的图像上调用convert("RGBA")有关。PIL可能需要这些信息。在

另外,您是否尝试过在不使用convert()的情况下调用show()是否仍然损坏?在

这是PIL convert源代码https://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.convert

当PIL显示带有show的图像时,它会删除所有透明度。最简单的方法就是传递那些透明区域中存在的任何颜色值。这将取决于创建映像的应用程序。在

第一个图像在透明区域有随机的图像颜色,而第二个图像使用白色。在

相关问题 更多 >