PIL 将 png 像素导入为单个值而不是 3 个值向量

Yot*_*tam 2 python png image python-imaging-library

我有一堆从谷歌地图下载的 png 格式的地图文件,我想将它们转换为一个更大的图像。当我导入一个并查看像素时,我看到像素是 0..256 范围内的单个数字,而不是三个值列表。这里发生了什么?

我正在使用

from PIL import Image

print open('b1.png').load()[0,0]
Run Code Online (Sandbox Code Playgroud)

我得到153而不是 [r,g,b]

我的图像文件是 在此处输入图片说明

Dro*_*rop 5

这种结果的原因(值 153 in [0,0])是图像模式设置为P(8 位像素,使用调色板映射到任何其他模式)。如果您想设置不同的模式(例如RGB),您可以在调用方法之前进行设置load()。

以下是如何执行此操作的示例:

from PIL import Image
file_data = Image.open('b1.png')
file_data = file_data.convert('RGB') # conversion to RGB
data = file_data.load()
print data[0,0]
Run Code Online (Sandbox Code Playgroud)

打印的结果是

(240, 237, 229)
Run Code Online (Sandbox Code Playgroud)

有关图像模式的更多信息,请访问文档。