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

时间:2016-08-01 23:32:25

标签: python python-imaging-library rgb

我正在尝试制作一个相当简单的代码,它能够读取图像的大小并返回所有RGB值。我在Python 2.7上使用PIL,我的代码是这样的:

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 个答案:

答案 0 :(得分:4)

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

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

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

请注意,如果您的图片根本不应该是部分透明的,那么您可能会遇到更大的问题。如果不了解您的图片,我们无法帮助您。