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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top