2014-01-11 84 views
2

我有一個黑白bmp圖像,我需要一次訪問1個像素。我發現下面的代碼線上,但代替具有的1或0,它的255或0無法在PIL中將BMP圖像數據格式化爲1像素/像素

import Image 
img = Image.open(filename) 
img = img.convert('1') 
pix = img.load() 

的值的每個比特由象素執行轉換自己,像素,是極其緩慢的。

有人可以告訴我爲什麼上述方法不工作?

回答

2

你可以把它轉換是這樣的:

img.point(lambda x: bool(x)) 

但是,爲什麼你需要它擺在首位0/1(而不是0/255)?

+0

謝謝,我會嘗試。我需要它是二進制的,因爲我要將數據寫入LCD屏幕。 – gearhead

-1

也許numpy的是一個很好的解決方案:

import numpy as np 
from PIL import Image 

#here, the image will be a numpy array 
img = np.array(Image.open(filename))/255. 

如果你想將其轉換回圖像:

img = Image.fromarray(img) 

一個小細節:轉換爲numpy的將翻轉x和y。轉換回來將恢復原來的位置。