我有一堆地图文件,我是以png格式从Google地图下载的,我想将其转换为单个较大的图像。当我导入一个并查看像素时,我看到像素是0..256范围内的单个数字而不是三个值列表。这是怎么回事?
我正在使用
from PIL import Image
print open('b1.png').load()[0,0]
我得到153
而不是[r,g,b]
我的图片文件是
答案 0 :(得分:4)
这种结果的原因([0,0]
中的值153)是图像模式设置为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]
,打印结果是
(240, 237, 229)
有关图像模式的详细信息,请访问the documentation。
答案 1 :(得分:2)
您的图片位于mode=P
。它具有在调色板中定义的颜色。
>>> Image.open('b1.png')
<PIL.PngImagePlugin.PngImageFile image mode=P size=640x640 at 0x101856B48>
您需要RGB值。首先转换为RGB:
>>> im = Image.open('b1.png')
>>> im = im.convert('RGB')
>>> im.getpixel((1,1))
(240, 237, 229)
来自文档:http://pillow.readthedocs.org/en/latest/handbook/concepts.html?highlight=mode
P(8位像素,使用调色板映射到任何其他模式)
...
RGB(3x8位像素,真彩色)