我正在尝试制作一个相当简单的代码,它能够读取图像的大小并返回所有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部分进一步编码?我很高兴能得到任何帮助。
答案 0 :(得分:4)
我的猜测是你的图像文件正在使用预乘的alpha值。您看到的8
值非常接近55*34/255
(其中34
是Alpha通道值)。
PIL使用模式"RGBa"
(带有一点a
)来指示它何时使用预乘alpha。您可以告诉PIL将其转换为正常"RGBA"
,其中像素将大致具有您期望的值:
img = Image.open('C:/image.png').convert("RGBA")
请注意,如果您的图片根本不应该是部分透明的,那么您可能会遇到更大的问题。如果不了解您的图片,我们无法帮助您。