HTTP響應返回圖像我有一個生成開羅ImageSurface
代碼,我揭露它,像這樣:如何與CherryPy的
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')
的作品,但我不確定將數據轉儲到什麼位置以返回它。我在猜測一些類似文件的對象?根據the pycairo documentation,get_data()
返回一個緩衝區。我也試過現在:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
而且,是它更好地創建和存儲持有這一形象(就像我試圖做的),或者將其寫入到磁盤的臨時文件,並從那裏爲它服務?我只需要一次圖像,然後就可以丟棄。
'write_to_png_stream'如何? http://cairographics.org/documentation/cairomm/reference/classCairo_1_1Surface.html#b3eca5bc13abe27f470fdf08134269bb – 2010-06-17 18:18:10
pycairo似乎並未公開該方法... http://cairographics.org/documentation/pycairo/2/reference/surfaces。 html#class-imagesurface-surface – colinmarc 2010-06-17 18:23:52