使用Django提供动态生成的图像

puf*_*ish 26 python django ajax image

如何在Django中提供动态生成的图像?

我有一个HTML标签

<html>
...
    <img src="images/dynamic_chart.png" />
...
</html>
Run Code Online (Sandbox Code Playgroud)

链接到此请求处理程序,该处理程序创建内存中的映像

def chart(request):
    img = Image.new("RGB", (300,300), "#FFFFFF")
    data = [(i,randint(100,200)) for i in range(0,300,10)]
    draw = ImageDraw.Draw(img)
    draw.polygon(data, fill="#000000")
    # now what?
    return HttpResponse(output)
Run Code Online (Sandbox Code Playgroud)

我还计划将请求更改为AJAX,并添加某种缓存机制,但我的理解是不会影响解决方案的这一部分.

Vin*_*jip 30

我假设你正在使用PIL(Python Imaging Library).您需要替换最后一行(例如,如果您要提供PNG图像):

response = HttpResponse(mimetype="image/png")
img.save(response, "PNG")
return response
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见此处

  • 如果您使用的是Django 1.10 +,请使用content_type而不是mime类型 (4认同)