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

+1

используйте тип content_type вместо типа mime, если вы используете Django 1.10 + – codingrhythm

3

Я относительно новичок в Django. Я не смог найти что-нибудь в самой Джанго, но я наткнулся на проект на Google Code, который может иметь некоторую помощь Вам:

django-dynamic-media-serve

+0

Хорошая ссылка, может быть полезна, когда я добираюсь до этапа кэширования – pufferfish

Смежные вопросы