通过PIL(与this question相关),我在哪里可以获得全面的图像模式列表?我看到“RGB”,“RGBX”,我的代码以某种方式具有“BGRX”,即使它在我可以看到的PIL文档中没有提到。例如,如何在与Windows API调用交互时查看哪个,PIL支持哪些以及选择哪种正确的模式?
基本上我对图像模式知之甚少,并希望学习更多信件,以使其神奇地工作。
答案 0 :(得分:26)
Pillow中有两个截然不同的概念,名称相似:
这些列在https://pillow.readthedocs.io/en/latest/handbook/concepts.html#modes。
根据这些文档:
图像模式定义图像中像素的类型和深度。
这种“模式”是通过Image
的{{1}}属性公开的,可以通过.mode
方法进行更改,并且可以传递给采用.convert()
参数。它们与“原始模式”不同。
这些内容由raw decoder在内部使用,它将来自图像文件的未压缩数据转换为PIL mode
对象可以理解的格式。 “原始模式”比“模式”多几倍,它们不仅传达有关图像中像素的类型(彩色或灰度)和位深度的信息,还传达它们在文件中的布局。例如,原始模式Image
被记录为“24位真彩色,行交错(首先是所有红色像素,所有绿色像素,最后是所有蓝色像素)。”
如上面链接的文档(以及旧PIL documentation)中所述,可以在RGB;L
中找到原始模式列表。您将在文件末尾附近找到该列表。
Unpack.c
:https://github.com/python-pillow/Pillow/blob/master/src/libImaging/Unpack.c
Unpack.c
:http://svn.effbot.org/public/tags/pil-1.1.7/libImaging/Unpack.c