GIF 和 JPEG 的 Python 和 PIL 像素值不同
Posted
技术标签:
【中文标题】GIF 和 JPEG 的 Python 和 PIL 像素值不同【英文标题】:Python and PIL pixel values different for GIF and JPEG 【发布时间】:2011-08-13 14:07:34 【问题描述】:我对使用 PIL 加载函数打开的图像返回的像素值有疑问。我正在使用以下代码:
frame = Image.open(fname).load()
a = frame[10, 10]
如果我加载 GIF 图像,a
是整数值 43。但如果我将图像转换为 JPEG 并重新运行代码,a
是一个元组 (253, 254, 100)
。
为什么?我怎样才能将(253, 254, 100)
转换回 43?
【问题讨论】:
【参考方案1】:GIF 是托盘化的,而 JPEG 是 RGB。转换图像的行为会处理调色板,因此您必须查看 GIF 中的调色板条目以找到与所需颜色最接近的匹配。
【讨论】:
进一步澄清:GIF 图像有一个(最多)256 种颜色的表格。每个像素在此表中都有一个索引(在您的示例中为 10),用于确定其颜色。 JPEG 存储每个像素的 RGB 值。如果您查看 GIF 颜色表中的条目 10,它应该是(253, 254, 100)
(或非常接近)。以上是关于GIF 和 JPEG 的 Python 和 PIL 像素值不同的主要内容,如果未能解决你的问题,请参考以下文章