使用Django服务动态生成的图片

27 投票
4 回答
18883 浏览
提问于 2025-04-15 12:38

我该如何在Django中提供一个动态生成的图片呢?

我有一个HTML标签

<html>
...
    <img src="images/dynamic_chart.png" />
...
</html>

它连接到这个请求处理器,这个处理器会创建一个保存在内存中的图片

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)

我还打算把请求改成AJAX,并添加某种缓存机制,但我理解这部分应该不会影响解决方案的其他部分。

4 个回答

3

我在寻找解决同样问题的方法。

对我来说,这个简单的方法效果很好:

from django.http import FileResponse

def dyn_view(request):

    response = FileResponse(open("image.png","rb"))
    return response
3

我自己对Django也还比较陌生。虽然在Django里找不到相关的东西,但我在Google Code上发现了一个项目,可能对你有帮助:

django-dynamic-media-serve

31

我猜你是在使用PIL(Python图像库)。你需要把最后一行换成这个(比如说,如果你想提供一个PNG格式的图片):

response = HttpResponse(mimetype="image/png")
img.save(response, "PNG")
return response

想了解更多信息,可以查看这里

撰写回答