2011-04-27 58 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