Mit PyCairo zu erzeugen Bilder dynamisch und dienen in Django
-
25-09-2019 - |
Frage
Ich möchte eine dynamisch erzeugte PNG-Bild mit PyCairo erzeugen und servieren es Django usign. Ich lese diese: Serve eine dynamisch generierte Bild mit Django
Gibt es eine Möglichkeit zum Transport von Daten von PyCairo Oberfläche direkt in HTTP-Antwort? Ich tue dies für jetzt:
data = surface.to_rgba()
im = Image.frombuffer ("RGBA", (width, height), data, "raw", "RGBA", 0,1)
response = HttpResponse(mimetype="image/png")
im.save(response, "PNG")
return response
Aber es hat eigentlich keine Arbeit, weil es keine to_rgba Anruf ist (dieser Anruf ich Google Code gefunden verwenden, aber nicht funktioniert).
EDIT:. Die to_rgba kann durch den richtigen Anruf get_data ersetzt werden (), aber ich will noch wissen, ob ich kann Bypass PIL insgesamt
Lösung
def someView(request):
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 100, 100)
context = cairo.Context(surface)
# Draw something ...
response = HttpResponse(mimetype="image/png")
surface.write_to_png(response)
return response
Andere Tipps
Sie können versuchen, diese: http: //www.stuartaxon. com / 2010/02/03 / mit-kairo-to-generate-svg-in-django Es geht darum, SVG, aber ich denke, es wird einfach zu adaptieren