Использование Pycairo для динамического создания изображений и их использования в Django - PullRequest
0 голосов
/ 09 июня 2010

Я хочу сгенерировать динамически создаваемое изображение в формате png с помощью Pycairo и использовать его под именем Django. Я прочитал это: Служит для динамически генерируемого изображения с Django .

Есть ли способ переноса данных с поверхности Pycairo прямо в ответ HTTP? Я делаю это сейчас:

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

Но на самом деле это не работает, потому что нет вызова to_rgba (этот вызов я нашел с помощью кода Google, но он не работает).

РЕДАКТИРОВАТЬ: to_rgba можно заменить правильным вызовом get_data (), но я все еще хочу знать, могу ли я вообще обойти PIL.

Ответы [ 2 ]

7 голосов
/ 15 июня 2010
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
0 голосов
/ 10 июня 2010

Вы можете попробовать это: http://www.stuartaxon.com/2010/02/03/using-cairo-to-generate-svg-in-django Речь идет о SVG, но я думаю, что будет легко адаптировать

...