2009-07-02 16 views
25

Wie diene ich ein dynamisch generiertes Bild in Django?Dienen ein dynamisch generiertes Bild mit Django

Ich habe ein HTML-Tag

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

zu diesem Request-Handler verknüpft, das Bild eine im Speicher erzeugt

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) 

Ich plane, auch die Anforderungen an AJAX zu ändern, und fügen Sie einige Art von Caching-Mechanismus, aber mein Verständnis ist, dass dieser Teil der Lösung nicht beeinflussen würde.

Antwort

27

Ich nehme an, Sie PIL verwenden (Python Imaging-Bibliothek). Sie benötigen eine letzte Zeile mit (zum Beispiel, wenn Sie ein PNG-Bild dienen sollen) ersetzen:

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

Für weitere Informationen siehe here.

+1

Ich benutze PIL für dieses Beispiel, aber wahrscheinlich andere Bibliotheken wie Matplotlib verwenden. Sollte aber auch funktionieren. – pufferfish

+1

Verwenden Sie content_type anstelle von Mime-Typ, wenn Sie Django 1.10 + verwenden – codingrhythm

3

Ich bin relativ neu in Django selbst. Ich habe nicht in der Lage gewesen, alles in Django selbst zu finden, aber ich habe auf ein Projekt auf Google Code gestolpert, die Sie eine Hilfe sein kann:

django-dynamic-media-serve

+0

Guter Link, könnte nützlich sein, wenn ich die Caching-Stufe – pufferfish

Verwandte Themen