2009-07-02 84 views
25

如何在Django中为动态生成的图像提供服务?用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,并添加一些有些缓存机制,但我的理解是不会影响这部分解决方案。

回答

27

我假设你正在使用PIL(Python的成像库)。你需要(例如,如果你想成为一个PNG图像)来替换你的最后一行:

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

更多信息请参见here

+1

我在这个例子中使用PIL,但可能会使用其他库,如matplotlib。应该尽管工作。 – pufferfish 2009-07-02 14:38:43

3

我自己对Django比较陌生。我一直没能找到Django的事情,但我已经在谷歌代码项目,可能是一些帮助你迷迷糊糊:

django-dynamic-media-serve

+0

好的链接,当我进入缓存阶段时可能会有帮助 – pufferfish 2009-07-06 15:31:33