PIL 返回的 RGB 值与 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部分进一步编码吗?我很乐意得到任何帮助。

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

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

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

请注意,如果你的图像不应该是部分透明的,你可能会遇到更大的问题。如果不了解更多关于你的图像的信息,我们将无法帮助你。

最新更新