Usando o pycairo para gerar imagens dinamicamente e servir em django
-
25-09-2019 - |
Pergunta
Quero gerar uma imagem PNG criada dinamicamente com o Pycairo e servir a Usign Django. Eu li isso: Sirva uma imagem gerada dinamicamente com django.
Existe uma maneira de transportar dados da superfície do pycairo diretamente para a resposta HTTP? Estou fazendo isso por enquanto:
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
Mas na verdade não funciona porque não há uma chamada para_rgba (esta chamada que encontrei usando o código do Google, mas não funciona).
EDIT: O TO_RGBA pode ser substituído pela chamada correta get_data (), mas ainda quero saber se posso ignorar completamente o PIL.
Solução
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
Outras dicas
Você pode tentar isso:http://www.stuartaxon.com/2010/02/03/using-cairo-to-generar-svg-n-djangoÉ sobre SVG, mas acho que será fácil adaptar
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow