我正在使用Python和PIL创建一个不透明的RGB图像并将其保存为PNG格式。
但是当我显示它时,每个像素的RGB会改变其正确的值。 (我通过捕获没有比例的屏幕截图进行测试,并在此屏幕截图中打印出RGB值)原始图像的RGB值完全正确,只有屏幕截图中的值更改。
im = Image.new("RGB",(length,length),"black")
set RGB value for certain point
im.save(image.png,"PNG")
但是,如果我以RGBA格式创建图像,而不设置Alpha值并将其另存为PNG格式,则屏幕截图上的RGB值完全正确。
im = Image.new("RGBA",(length,length),"black")
set RGB value for certain point
im.save(image.png,"PNG")
我想知道为什么会出现差异,因为它不是透明图像。
我询问Quora和discussed with someone谁告诉我这不是PNG的问题/特征。
我还查看了与PNG保存相关的PIL源代码。从line726我发现,对于不透明的PNG图像,如果图像不是RGBA格式图像,则Alpha通道没有默认值。
所以我想知道当PIL尝试时会发生什么,所以将RGB格式图像保存到没有默认Alpha值的PNG文件中?
或者在显示没有Alpha通道的PNG文件时系统是否会出现问题?
P.S。我正在使用PNG图像作为媒体来传输文件,因此RGB值应该完全正确才能解码。
如果您需要查看我的所有代码: https://github.com/lanyusea/py_imageFileConverter
谢谢!