我正在尝试制作一个相当简单的代码,它将能够读取图像的大小并返回所有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")
请注意,如果你的图像不应该是部分透明的,你可能会遇到更大的问题。如果不了解更多关于你的图像的信息,我们将无法帮助你。