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

发布于 2024-09-04 11:15:47 字数 576 浏览 10 评论 0原文

我想使用 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。

I want to generate a dynamically created png image with Pycairo and serve it usign Django. I read this: Serve a dynamically generated image with Django.

Is there a way to transport data from Pycairo surface directly into HTTP response? I'm doing this for now:

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

But it actually doesn't work because there isn't a to_rgba call (this call I found using Google code but doesn't work).

EDIT: The to_rgba can be replaced by the correct call get_data(), but I still want to know if I can bypass PIL altogether.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吖咩 2024-09-11 11:15:47
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
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
痞味浪人 2024-09-11 11:15:47

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

You can try this:
http://www.stuartaxon.com/2010/02/03/using-cairo-to-generate-svg-in-django
It's about SVG but I think it will be easy to adapt

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文