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

0 投票
2 回答
2540 浏览
提问于 2025-04-15 23:44

我想用Pycairo动态生成一个png图片,并通过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 个回答

0

你可以试试这个链接:http://www.stuartaxon.com/2010/02/03/using-cairo-to-generate-svg-in-django。这个内容是关于SVG的,不过我觉得你可以很容易地调整一下来适应你的需求。

7

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向其他人请教。

在这些论坛上,很多人会分享他们的经验和解决方法。你可以看到其他人提问,描述他们遇到的具体问题,然后会有一些专业人士或者有经验的程序员给出建议和解决方案。

这些建议可能包括如何修改代码、使用不同的工具,或者是一些调试的方法。通过这些讨论,我们可以学习到很多实用的知识,帮助我们更好地理解编程。

总之,StackOverflow是一个很好的资源,可以帮助我们解决编程中遇到的各种问题,提升我们的技能。

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

撰写回答