Python-PIL:getdata() - 方法不返回元组

时间:2015-12-22 13:55:16

标签: python image image-processing python-imaging-library

我对编码很新(自4个月以来一直编码),我对python模块PIL有疑问。

每当我在图像上调用getdata() - 方法时,我就会得到一些奇怪的东西。

来自PIL导入图片:

# Histogram class to get the data
class Histogram:
    def __init__(self, image):
        image.convert("RGB")
        pixel_value_list = list(image.getdata())
        print(pixel_value_list[1])

image = Image.open("lenna.gif")
histogram = Histogram(image)

但是我没有将一个元组打印到控制台,但不知何故45 ... 我不知道... 我的问题是:为什么list(image.getdata())不返回带有元组的列表,而是一个完全由整数组成的列表?

1 个答案:

答案 0 :(得分:2)

如果您打开一个调色板文件(如GIF),并通过.getdata()打印像素列表,您将获得调色板中的索引列表,例如:

im = Image.open("composplot.gif")
print(list(im.getdata()))

输出:

[0, 0, 0, 0, 0, 0, 0, 0, 6, 223, 0, 0, 46, 219, 195, ...]

但是,如果您将调色图像转换为RGB图像,您将获得(r,g,b)元组的列表。例如:

im = Image.open("composplot.gif")
imrgb = im.convert("RGB")
print(list(imrgb.getdata()))

输出:

[(255, 255, 255), (255, 255, 255), (216, 216, 216), (8, 8, 8), (191, 191, 191), (255, 255, 255), ...]