2009-07-02 106 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