2012-04-28 6 views
1

ファイルを変数として扱うための方法はありますか? 例として、PILイメージモジュールからの保存関数が呼び出された場合:Image.save("foo.jpg")すべてのデータはハードディスクに保存されませんが、aという変数に導入されますので、a.read()が呼び出されると、ファイルの内容は次のようになります。Pythonの変数とファイル

答えて

8

あなたはバイトストリームにPIL画像を保存するためにBytesIOクラスを使用することができます。

>>> from PIL import Image 
>>> im = Image.open('ball.png') 
>>> from io import BytesIO 
>>> buffer = BytesIO() 
>>> im.save(buffer, format='png') 
>>> buffer.getvalue() 
'\x89PNG\r\n\x1a\n\x00\ ... 

それはおそらく全体io module pageを読ん価値がch3kaが指摘したように、それは、良い情報の多くはかなり短いですが、StringIOをが含まれています。

+0

答えがありがとう、それは働いたが、もう1つの質問、 'im.write'の目的は何ですか? –

+1

これは、私がちょっとだけ保存するための適切なImageクラスメソッドを忘れていた、私はちょうど削除しました:) –

7

確かに、StringIOモジュールをご覧ください。これは、文字列のためのファイルのようなインターフェイスを提供します。

http://docs.python.org/library/stringio.html

StringIO - File-like objects that read from or write to a string buffer. 
関連する問題