Usando PyCairo para generar imágenes de forma dinámica y servir en Django
-
25-09-2019 - |
Pregunta
Quiero generar una imagen PNG creada dinámicamente con PyCairo y servir usign Django. Leí esto: una imagen generada dinámicamente Servir con Django
¿Hay una manera de transporte de datos desde la superficie PyCairo directamente en la respuesta HTTP? Estoy haciendo esto por ahora:
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
Pero en realidad no funciona porque no hay una llamada to_rgba (esta llamada me encontré con el uso de código de Google pero que no funciona).
EDIT:. El to_rgba puede ser sustituido por los get_data llamadas correctas (), pero todavía quiero saber si me pueden pasar por alto por completo PIL
Solución
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
Otros consejos
Puede probar esto: http: //www.stuartaxon. com / 2010/02/03 / usando-Cairo-a-generate-SVG-en-django Se trata de SVG, pero creo que será fácil de adaptar