2016-08-01 107 views
0

我試圖製作一個相當簡單的代碼,它能夠讀取圖像的大小並返回所有RGB值。我使用PIL關於Python 2.7和我的代碼是這樣的:PIL返回的RGB值與RGB顏色不匹配

import os, sys 
from PIL import Image 
img = Image.open('C:/image.png') 
pixels = img.load() 

print(pixels[0, 1]) 

現在這個代碼實際上是偏離了這個網站,以此來讀取一個GIF文件。我試圖讓代碼打印出一個RGB元組(在這種情況下(55,55,55)),但它給了我一個無關數字的小序列,通常包含34個。

我試過許多其他的代碼示例,無論是否來自這裏,但它似乎並沒有工作。 .png格式有問題嗎?我需要在rgb部分進一步編碼嗎?我很樂意提供任何幫助。

+1

通過小序列你的意思是4個數字? (表示RGBA)你能發佈確切的輸出嗎? – jedwards

+1

請上傳你的圖片(如[imgur](http://imgur.com/))和[編輯]你的問題,並添加一個鏈接。 – martineau

+0

在這種情況下,它是4個數字。輸出是(8,8,8,34)。在此代碼之前它是(34,34,34)。它有所不同。 –

回答

4

我的猜測是你的圖像文件正在使用預乘alpha值。您看到的8值非常接近55*34/255(其中34是alpha通道值)。

PIL使用模式"RGBa"(有一點點a)來指示它何時使用預乘alpha。您可以告訴PIL隱蔽的正常"RGBA",其中像素具有大致預期的值:

img = Image.open('C:/image.png').convert("RGBA") 

需要注意的是,如果你的圖像不應該是部分透明可言,你可能有更大的問題正在進行。如果不知道更多關於您的形象的信息,我們無法幫助您。