2012-01-11 64 views
12

問題是從內存加載jpeg編碼的圖像。Python成像:從內存中加載jpeg

我收到一個字符串從插座:

jpgdata = self.rfile.read(sz) 

,我知道這是JPEG編碼的圖像。

我需要對它進行解碼。 最笨的解決辦法是:

o = open("Output/1.jpg","wb") 
o.write(jpgdata) 
o.close() 
dt = Image.open("Output/1.jpg") 

的問題是如何做到的內存是一回事嗎?

回答

15

PIL的Image.open對象接受任何類似文件的對象。這意味着你可以用一個StringIO對象上的圖像數據,並把它傳遞給Image.Open

from cStringIO import StringIO 
file_jpgdata = StringIO(jpgdata) 
dt = Image.open(file_jpgdata) 

或者,嘗試只是路過self.rfile作爲參數傳遞給Image.open - 它可能工作得很好。 (這是對於Python 2 - 對於Python 3使用from io import BytesIO

0

使用StringIO的這樣,如果它是一個文件,圖片可以訪問您的數據。