Вопрос по python, django, ajax, image – Подавать динамически сгенерированное изображение с Django

26

Как мне обслуживать динамически генерируемое изображение в 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 и добавить какой-то механизм кэширования, но, насколько я понимаю, это не повлияет на эту часть решения.

Ваш Ответ

2   ответа
29

что вы используете PIL (Python Imaging Library). Вам нужно заменить последнюю строку на (например, если вы хотите разместить изображение в формате PNG):

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

УвидетьВот для дополнительной информации.

используйте content_type вместо mime-типа, если вы используете Django 1.10 +
Я использую PIL для этого примера, но, вероятно, собираюсь использовать другие библиотеки, такие как matplotlib. Должно работать тоже, хотя. pufferfish
3

амом Django, но я наткнулся на проект в Google Code, который может быть вам полезен:

Джанго динамическим медиа-обслуживание

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

Похожие вопросы