我有生成 Cairo 的代码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
另外,在内存中创建和保存这个图像(就像我正在尝试做的那样)或者将它作为临时文件写入磁盘并从那里提供它会更好吗?我只需要图像一次,然后可以将其丢弃。