PIL返回的RGB值与RGB颜色不匹配

问题描述:

我试图制作一个相当简单的代码,它能够读取图像的大小并返回所有RGB值。我使用PIL关于Python 2.7和我的代码是这样的:PIL返回的RGB值与RGB颜色不匹配

import os, sys 
from PIL import Image 
img = Image.open('C:/image.png') 
pixels = img.load() 

print(pixels[0, 1]) 

现在这个代码实际上是偏离了这个网站,以此来读取一个GIF文件。我试图让代码打印出一个RGB元组(在这种情况下(55,55,55)),但它给了我一个无关数字的小序列,通常包含34个。

我试过许多其他的代码示例,无论是否来自这里,但它似乎并没有工作。 .png格式有问题吗?我需要在rgb部分进一步编码吗?我很乐意提供任何帮助。

+1

通过小序列你的意思是4个数字? (表示RGBA)你能发布确切的输出吗? – jedwards

+1

请上传你的图片(如[imgur](http://imgur.com/))和[编辑]你的问题,并添加一个链接。 – martineau

+0

在这种情况下,它是4个数字。输出是(8,8,8,34)。在此代码之前它是(34,34,34)。它有所不同。 –

我的猜测是你的图像文件正在使用预乘alpha值。您看到的8值非常接近55*34/255(其中34是alpha通道值)。

PIL使用模式"RGBa"(有一点点a)来指示它何时使用预乘alpha。您可以告诉PIL隐蔽的正常"RGBA",其中像素具有大致预期的值:

img = Image.open('C:/image.png').convert("RGBA") 

需要注意的是,如果你的图像不应该是部分透明可言,你可能有更大的问题正在进行。如果不知道更多关于您的形象的信息,我们无法帮助您。