42

通过 PIL(以及与此问题相关),我在哪里可以获得图像模式的完整列表?我看到“RGB”,“RGBX”,我的代码以某种方式具有“BGRX”,尽管我可以看到的 PIL 文档中没有提到它。例如,当与 Windows API 调用交互时,我如何查看哪个是哪个,PIL 支持什么,以及选择哪些合适的模式?

基本上我对图像模式知之甚少,我想了解的不仅仅是输入什么字母才能让它神奇地工作。

4

1 回答 1

31

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

于 2010-11-16T22:36:17.583 回答