我有一堆我从谷歌地图中,我要转换为一个更大的图像PNG格式的下载的地图文件。 当我输入一个,我看像素,我看到像素中的0..256,而不是三个值列表范围内的单个数字。 这里发生了什么?
我正在使用
from PIL import Image
print open('b1.png').load()[0,0]
我得到153
代替[R,G,B]
我的图像文件
我有一堆我从谷歌地图中,我要转换为一个更大的图像PNG格式的下载的地图文件。 当我输入一个,我看像素,我看到像素中的0..256,而不是三个值列表范围内的单个数字。 这里发生了什么?
我正在使用
from PIL import Image
print open('b1.png').load()[0,0]
我得到153
代替[R,G,B]
我的图像文件
这样的结果的原因(在值153 [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]
和打印的结果是
(240, 237, 229)
有关图像模式的更多信息,请访问该文档 。
您的图片在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(3×8位像素,色彩真实)