2012-01-10 4 views
6

this oneのようなWSGIを使用してイメージを動的に返す方法について詳しく説明しました。しかし、私が見てきたすべての例は、イメージをバイナリ形式で開き、それを読んでから、そのデータを返しています(これは私にとってはうまくいきます)。WSGIアプリケーションからメモリ内のPILイメージを返す方法

メモリ内のPILイメージオブジェクトを使用して同じことを達成しようとしています。私は既に画像をメモリに保存しているので、画像をファイルに保存したくありません。

を考えると、この:

data = base.tostring() 
response_headers = [('Content-type', 'image/png'), ('Content-length', len(data))] 
start_response(status, response_headers) 
return [data] 

WSGIは、クライアントの罰金にこれを返します。

fd = open(aPath2Png, 'rb') 
base = Image.open(fd) 
... lots more image processing on base happens ... 

私はこれを試してみました。しかし、返された画像に何か問題があったというエラーがイメージに表示されます。

その他の方法はありますか?

答えて

11

Image.save()を参照してください。この場合、ファイルオブジェクトを取ることができます。その場合、StringIOインスタンスに書き込むことができます。したがって、次のようなものがあります。

output = StringIO.StringIO() 
base.save(output, format='PNG') 
return [output.getvalue()] 

フォーマットに使用できる値を確認する必要があります。

+0

** mod_wsgi ** man自身からの返信...インターウェブはとても小さいです。それは魅力のように働いた。レスポンスヘッダーにContent-Lengthを設定することはありませんでした...ありがとうございます。 – angeloHarpy

関連する問題