2009-07-02 20 views
25

Django'da dinamik olarak oluşturulan bir görüntüyü nasıl sunabilirim?Django ile dinamik olarak oluşturulmuş bir görüntü sunun

Ben bir html etiketini var

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

bir bellek içi görüntü oluşturur bu istek işleyicisi, kadar bağlantılı Ben de AJAX istekleri değiştirmek ve bazı eklemeyi planlıyoruz

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) 

önbellek mekanizması, ama benim anlayışım çözümün bu kısmını etkilemez.

cevap

27

Sana PIL kullandığınız varsayılmaktadır (Python Görüntüleme Kitaplığı).

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

fazla bilgi için here görme: (PNG görüntüsünü sunmak istiyorsanız, örneğin) ile son satırı değiştirmeniz gerekir.

+1

Bu örnek için PIL kullanıyorum, ancak muhtemelen matplotlib gibi diğer kütüphaneleri kullanacağım. Çok çalışmalı. – pufferfish

+1

Django 1.10 + kullanıyorsanız, mime türü yerine content_type kullanın – codingrhythm

3

Ben Django kendime nispeten yeni. Django kendisi bir şey bulmak mümkün olmamıştır, ama sana bazı yardımcı olabilir Google Code bir proje tökezledi:

django-dynamic-media-serve

+0

İyi bağlantı, önbellekleme aşamasına geldiğimde yararlı olabilir – pufferfish

İlgili konular