Python和PIL:GIF和JPEG的像素值不同

7

我有一个关于使用PIL load函数打开图像返回的像素值的问题。我正在使用以下代码:

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

如果我加载一个GIF图像,a是整数值43。但如果我将图像转换为JPEG并重新运行代码,则a是元组(253, 254, 100)
为什么?如何将(253, 254, 100)转换回43?
1个回答

8

GIF是有调色板的,而JPEG是RGB格式。转换图像时会丢弃调色板,因此您需要查看GIF中的调色板条目以找到最接近所需颜色的匹配项。


进一步说明:GIF图像具有高达256种颜色的调色板。每个像素都有一个指向此调色板的索引(在您的示例中为10),用于确定其颜色。JPEG存储每个像素的RGB值。如果查看GIF的颜色表中的第10个条目,则应为“(253,254,100)”(或非常接近)。 - Blair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接