2

テンプレートに Python と Jinja を使用して Google App Engine を使用しています。私の HTML テンプレートには、ユーザーがファイル (画像) を選択できるようにする次のコードがあります。

    <form action="/step2" enctype="multipart/form-data" method="post">
        <input type="file" name="datafile" size="40">
        <input type="submit" value="upload" >
    </form>

投稿すると、self.request.get('datafile') を介して画像を取得できます。これはバイナリ データ型 ('str') のようです。これをデータベースに入れて、次のように表示できます。

    self.response.out.write('<div><img src="img?img_id=%s"></img>' % userimages.key())

画像処理を行うために、これを PIL.Image データ型に変換する方法を見つけるのに苦労しています。前もって感謝します!

4

1 に答える 1

7

文字列をStringIOオブジェクトに入れます。

from cStringIO import StringIO

imgfile = StringIO(self.request.get('datafile'))
img = Image.open(imgfile)

PIL が必要とするのは、ファイルのようなオブジェクトだけです。StringIO指定された文字列からの実際のデータをこのソースに提供します。

PILに、オブジェクトに書き込みStringIOますが、使用する形式を指定する必要があります。

imgfile = StringIO()
img.save(imgfile, format='PNG')
imagestring = imgfile.getvalue()
于 2013-11-06T15:29:56.697 に答える