通过 PIL(以及与此问题相关),我在哪里可以获得图像模式的完整列表?我看到“RGB”,“RGBX”,我的代码以某种方式具有“BGRX”,尽管我可以看到的 PIL 文档中没有提到它。例如,当与 Windows API 调用交互时,我如何查看哪个是哪个,PIL 支持什么,以及选择哪些合适的模式?
基本上我对图像模式知之甚少,我想了解的不仅仅是输入什么字母才能让它神奇地工作。
通过 PIL(以及与此问题相关),我在哪里可以获得图像模式的完整列表?我看到“RGB”,“RGBX”,我的代码以某种方式具有“BGRX”,尽管我可以看到的 PIL 文档中没有提到它。例如,当与 Windows API 调用交互时,我如何查看哪个是哪个,PIL 支持什么,以及选择哪些合适的模式?
基本上我对图像模式知之甚少,我想了解的不仅仅是输入什么字母才能让它神奇地工作。
Pillow 中有两个不同的概念,它们的名称很相似:
这些在https://pillow.readthedocs.io/en/latest/handbook/concepts.html#modes中列出。
根据这些文档:
图像的模式定义了图像中像素的类型和深度。
这种“模式”是通过Image
's 的.mode
属性暴露出来的,可以通过.convert()
方法改变,也可以传递给带mode
参数的方法。它们与“原始模式”不同。
这些由原始解码器在内部使用,它将图像文件中的未压缩数据转换为 PILImage
对象可以理解的格式。“原始模式”比“模式”多几倍,它们不仅传达有关图像中像素的类型(彩色或灰度)和位深度的信息,还传达它们在文件中的布局信息。例如,原始模式RGB;L
被记录为“24 位真彩色,行交错(首先是所有红色像素,然后是所有绿色像素,最后是所有蓝色像素)”。
如上面链接的文档(以及旧的PIL 文档)中所述,原始模式列表可以在Unpack.c
. 您会在文件末尾附近找到该列表。
Unpack.c
来自 Pillow 的当前 master 分支:https ://github.com/python-pillow/Pillow/blob/master/src/libImaging/Unpack.c
Unpack.c
来自 PIL 的最终版本:http: //svn.effbot.org/public/tags/pil-1.1.7/libImaging/Unpack.c