8

Pythonを使用して画像を処理(フィルターやその他の変換を適用)してから、HTTPを使用してユーザーに提供する必要があります。現在、BaseHTTPServerとPILを使用しています。

問題は、PILがファイルストリームに直接書き込むことができないため、一時ファイルに書き込んでから、このファイルを読み取って、サービスのユーザーに送信できるようにする必要があることです。

JPEGをI/O(ファイルのような)ストリームに直接出力できるPython用の画像処理ライブラリはありますか?PILにそれを行わせる方法はありますか?

4

1 に答える 1

17

メモリ内のバイナリファイルオブジェクトを使用しますio.BytesIO

from io import BytesIO

imagefile = BytesIO()
animage.save(imagefile, format='PNG')
imagedata = imagefile.getvalue()

これはPython2とPython3の両方で利用できるため、推奨される選択です。

Python 2の場合のみ、メモリ内のファイルオブジェクトモジュールを使用することもできますStringIO。または、Cでコード化された同等のモジュールを使用することもできcStringIOます。

from cStringIO import StringIO

imagefile = StringIO()  # writable object

# save to open filehandle, so specifying the expected format is required
animage.save(imagefile, format='PNG')
imagedata = imagefile.getvalue()

StringIO/cStringIOは、同じ原則の古いレガシー実装です。

于 2013-01-13T14:11:17.280 に答える