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部分进一步编码吗?我很乐意提供任何帮助。
答
我的猜测是你的图像文件正在使用预乘alpha值。您看到的8
值非常接近55*34/255
(其中34
是alpha通道值)。
PIL使用模式"RGBa"
(有一点点a
)来指示它何时使用预乘alpha。您可以告诉PIL隐蔽的正常"RGBA"
,其中像素具有大致预期的值:
img = Image.open('C:/image.png').convert("RGBA")
需要注意的是,如果你的图像不应该是部分透明可言,你可能有更大的问题正在进行。如果不知道更多关于您的形象的信息,我们无法帮助您。
通过小序列你的意思是4个数字? (表示RGBA)你能发布确切的输出吗? – jedwards
请上传你的图片(如[imgur](http://imgur.com/))和[编辑]你的问题,并添加一个链接。 – martineau
在这种情况下,它是4个数字。输出是(8,8,8,34)。在此代码之前它是(34,34,34)。它有所不同。 –