2012-01-11 5 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) 

にそれを渡したり、ちょうどImage.openの引数としてself.rfileを渡して試すことができますを意味します。 (これはPython 2用です - Python 3用from io import BytesIO

0

StringIOを使用すると、Imageはファイルのようにデータにアクセスできます。

関連する問題