私はカイロを生成するコードを持っていますImageSurface
、そして私はそれを次のように公開します:
def preview(...):
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
...
cherrypy.response.headers['Content-Type'] = "image/png"
return surface.get_data()
preview.exposed = True
これは機能しません(ブラウザは画像にエラーがあると報告します)。
私はそれがsurface.write_to_png('test.png')
機能することをテストしましたが、データを返すためにデータを何にダンプするかがわかりません。ファイルのようなオブジェクトを推測していますか?pycairoのドキュメントによると、get_data()
はバッファを返します。私も試しました:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
また、このイメージを作成してメモリに保持する(私がやろうとしているように)か、一時ファイルとしてディスクに書き込んでそこから提供する方がよいでしょうか?画像が必要なのは1回だけで、その後は破棄できます。