Wie man ein Bild in einer HTTP-Antwort mit CherryPy @ zurückgi
Ich habe Code, der ein Cairo generiertImageSurface
, und ich lege es so aus:
def preview(...):
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
...
cherrypy.response.headers['Content-Type'] = "image/png"
return surface.get_data()
preview.exposed = True
Dies funktioniert nicht (Browser melden, dass das Bild Fehler enthält).
Ich habe das getestetsurface.write_to_png('test.png')
funktioniert, aber ich bin nicht sicher, in was ich die Daten speichern soll, um sie zurückzugeben. Ich vermute ein dateiähnliches Objekt? Gemäßdie Pycairo-Dokumentation, get_data()
gibt einen Puffer zurück. Ich habe es auch jetzt versucht:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
Auch ist es besser, dieses Image zu erstellen und im Speicher zu halten (wie ich es versuche) oder es als temporäre Datei auf die Festplatte zu schreiben und von dort aus bereitzustellen? Ich brauche das Bild nur einmal, dann kann es verworfen werden.