En utilisant pycairo pour générer des images dynamiquement et servir dans Django
-
25-09-2019 - |
Question
Je veux générer une image dynamique créée avec .png pycairo et servez usign Django. Je lis ceci:. servir une image générée dynamiquement avec Django
Y at-il un moyen de transport de données de surface pycairo directement en réponse HTTP? Je fais cela pour l'instant:
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
Mais il ne fonctionne pas en réalité parce qu'il n'y a pas un appel to_rgba (ce que j'ai trouvé appel à l'aide du code Google, mais ne fonctionne pas).
EDIT:. Le to_rgba peut être remplacé par le get_data d'appel correct (), mais je veux encore savoir si je peux contourner PIL tout à fait
La solution
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
Autres conseils
Vous pouvez essayer ceci: http: //www.stuartaxon. com / 2010/02/03 / utilisant-cairo à générer-svg-en-django Il est sur le SVG, mais je pense qu'il sera facile d'adapter