2011-04-27 43 views
5

我对使用PIL加载函数打开的图像返回的像素值有疑问。我使用下面的代码:对于GIF和JPEG,Python和PIL像素值不同

frame = Image.open(fname).load() 
a = frame[10, 10] 

如果我打开一个GIF图像,a是整数值43。但是,如果我将图像转换为JPEG并重新运行代码,a是一个元组(253, 254, 100)

为什么?我怎样才能将(253, 254, 100)转换回43?

谢谢。

回答

5

GIF是托盘化的,而JPEG是RGB。转换图像的行为会使调色板失效,因此您必须查看GIF中的调色板条目以找到与所需颜色最接近的匹配。

+0

为了进一步阐明:GIF图像有一张(最多)256色的表格。每个像素都有一个指向此表(在您的示例中为10)的索引,用于确定其颜色。 JPEG存储每个像素的RGB值。如果你看GIF颜色表中的条目10,它应该是“(253,254,100)”(或者非常接近它)。 – Blair 2011-04-27 06:22:30