使用Pycairo动态生成图像并在Django中提供服务

时间:2010-06-09 10:13:40

标签: python django image python-imaging-library pycairo

我想用Pycairo生成一个动态创建的png图像,然后用它来设置Django。我读到了这个:Serve a dynamically generated image with 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 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

你可以试试这个: http://www.stuartaxon.com/2010/02/03/using-cairo-to-generate-svg-in-django 这是关于SVG但我认为它很容易适应