我有一堆地图文件,我已经下载了从谷歌地图的png格式,我想转换成一个更大的图像。当我导入一个像素时,我看到像素是一个0..256范围内的单个数字,而不是三个值列表。这里发生了什么事?
我在用
from PIL import Image
print open('b1.png').load()[0,0]我得到153而不是r,g,b
我的图像文件是

发布于 2014-11-23 23:32:51
这样的结果(在[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)有关图像模式的更多信息,请访问文献资料。
发布于 2014-11-23 23:29:34
您的图像在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位像素,真颜色)
https://stackoverflow.com/questions/27093835
复制相似问题