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 像素值不同的主要内容,如果未能解决你的问题,请参考以下文章

Python图像PIL设计和GIF动图

基于python-opencv和PIL的截取视频区域生成 GIF 动图

第96天:图像库 PIL

第96天:图像库 PIL

pytesseract——验证码的识别——PIL库的介绍

Python 图像库因消息“解码器 JPEG 不可用”而失败 - PIL