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.

Foi útil?

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
scroll top