私がやろうとしているのは、私の Pylons アプリに、いくつかのデータに基づいて画像を動的に生成させ、それをブラウザーで表示できるような方法で返すことです。
これまでのところ、次のようにイメージを生成しています。
import Image, ImageDraw
image = Image.new("RGB", (width, height),"black")
img_out = ImageDraw.Draw(image)
img_out.polygon(...
img_out.text(...
#etc
画像が正常に生成され、次のようにファイルに保存することもできます。
img_out.save(filepath)
私の問題は、ディスクに書き込もうとしているのではなく、Pylons 応答を介して返そうとしていることです。別の質問への回答に基づいて、私はこれまでに得ることができました:
import FileApp
my_headers = [('Content-Disposition', 'attachment; filename=\"' + user_filename + '\"'), ('Content-Type', 'text/plain')]
file_app = FileApp(filepath, headers=my_headers)
return file_app(request.environ, self.start_reponse)
このソリューションを使用して、サーバー側に保存した png を取得し、ダウンロードのためにユーザーに返すことができます。それでも、ここには 2 つの問題があります。1 つ目は、単にコードからイメージを直接使用するのではなく、ファイルをディスクに書き込んでディスクから提供することを余儀なくされていることです。2 つ目は、実際にファイルを返すため、ユーザーはブラウザでファイルを表示するのではなく、ファイルをダウンロードすることを余儀なくされます。
私が望むのは、ユーザーが自分でファイルをダウンロードするのではなく、ブラウザでファイルを表示できるようにすることです。理想的には、サーバー側のディスクに画像を保存する必要もありませんが、サーバーまたはクライアントのコンピューターに存在しないと、画像を提供することはおそらく不可能であることを認識しています.
だから私の質問はこれです。ユーザーがリクエストへの応答としてブラウザで画像を表示するように、コードから直接画像を提供できますか? そうでない場合、画像をディスクサーバー側に保存し、そこから提供して、ユーザーがブラウザで画像を表示し、ファイルのダウンロードを求められないようにすることはできますか?
(私は Python 2.6.2 と PasteScript 1.7.4.2 を使用しています)