tôi có mã mà tạo ra một Cairo ImageSurface
, và tôi tiếp xúc với nó như vậy:Làm thế nào để trở lại một hình ảnh trong một phản ứng HTTP với 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
này không hoạt động (trình duyệt báo cáo rằng hình ảnh có lỗi).
Tôi đã thử nghiệm rằng surface.write_to_png('test.png')
hoạt động, nhưng tôi không chắc chắn nên đưa dữ liệu vào để trả lại dữ liệu. Tôi đoán một số đối tượng giống như tập tin? Theo số the pycairo documentation, get_data()
trả về bộ đệm. Tôi cũng đã thử:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
Ngoài ra, tốt hơn là tạo và giữ hình ảnh này trong bộ nhớ (như tôi đang cố gắng làm) hoặc ghi nó vào đĩa ? Tôi chỉ cần hình ảnh một lần, sau đó nó có thể được loại bỏ.
Làm thế nào về 'write_to_png_stream'? http://cairographics.org/documentation/cairomm/reference/classCairo_1_1Surface.html#b3eca5bc13abe27f470fdf08134269bb –
pycairo dường như không hiển thị phương pháp đó ... http://cairographics.org/documentation/pycairo/2/reference/surfaces. html # class-imagesurface-surface – colinmarc