Python 使用Pycairo动态生成图像并在Django中提供服务
我想用Pycairo生成一个动态创建的png图像,并使用ign Django为其提供服务。我读到这个: 有没有办法将数据从Pycairo surface直接传输到HTTP响应中?我现在正在这样做:Python 使用Pycairo动态生成图像并在Django中提供服务,python,django,image,python-imaging-library,pycairo,Python,Django,Image,Python Imaging Library,Pycairo,我想用Pycairo生成一个动态创建的png图像,并使用ign Django为其提供服务。我读到这个: 有没有办法将数据从Pycairo surface直接传输到HTTP响应中?我现在正在这样做: data = surface.to_rgba() im = Image.frombuffer ("RGBA", (width, height), data, "raw", "RGBA", 0,1) response = HttpResponse(mimetype="image/png") im.sav
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调用我用谷歌代码找到的这个调用,但不起作用
编辑:to_rgba可以由正确的调用get_data替换,但我仍然想知道是否可以完全绕过PIL。您可以尝试以下方法:
这是关于SVG的,但我认为它很容易适应SVG的问题是IE不支持它。因此,我更喜欢使用静态图像的解决方案。将mimetype='image/svg+xml'替换为mimetype='image/png'。在位于surface.finish add surface.write_to_页面上方的cairodraw.draw_小部件中,链接不再有效。最后一个斜杠将从路径中删除。我已经更新了答案。谢谢,我还没有测试出来,因为我实际上是在问一个朋友这个问题。但这和我的要求一模一样。谢谢。在django 1.7中,mimetype参数被重命名为content\u type
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