tengo código que genera un ImageSurface
El Cairo, y exponerlo así:Cómo devolver una imagen en una respuesta HTTP con 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
Esto no funciona (navegadores informar que la imagen tiene errores)
He probado que surface.write_to_png('test.png')
obras, pero no estoy seguro de lo que para volcar los datos en devolverlo. Estoy adivinando algún objeto parecido a un archivo? De acuerdo con the pycairo documentation, get_data()
devuelve un buffer. También he intentado ahora:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
Además, es mejor crear y mantener esta imagen en la memoria (como yo estoy tratando de hacer) o escribir en el disco como un archivo temporal y se sirve a partir de ahí ? Solo necesito la imagen una vez, luego puede descartarse.
¿Qué tal 'write_to_png_stream'? No parece http://cairographics.org/documentation/cairomm/reference/classCairo_1_1Surface.html#b3eca5bc13abe27f470fdf08134269bb –
PyCairo para exponer ese método ... http://cairographics.org/documentation/pycairo/2/reference/surfaces. html # class-imagesurface-surface – colinmarc