2009-07-02 9 views
25

¿Cómo sirvo una imagen generada dinámicamente en Django?Sirve una imagen generada dinámicamente con Django

que tienen una etiqueta HTML

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

vinculado a este controlador de solicitudes, lo que crea una imagen en memoria

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) 

También planeo cambiar las solicitudes a AJAX, y añadir un poco tipo de mecanismo de caché, pero mi entendimiento es que eso no afectaría esta parte de la solución.

Respuesta

27

Asumo que estás usando PIL (Python Biblioteca de imágenes). Es necesario sustituir su última línea con (por ejemplo, si desea servir una imagen PNG):

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

Ver here para más información.

+1

Estoy usando PIL para este ejemplo, pero probablemente vaya a utilizar otras bibliotecas como matplotlib. Debería funcionar también. – pufferfish

+1

usa content_type en lugar de mime type si usas Django 1.10 + – codingrhythm

3

Soy relativamente nuevo en Django. No he podido encontrar nada en sí mismo Django, pero me he topado con un proyecto en Google Code que pueda ser de alguna ayuda para usted:

django-dynamic-media-serve

+0

Buen enlace, podría ser útil cuando llego a la etapa de almacenamiento en caché – pufferfish

Cuestiones relacionadas