Отдаем сгенерированную картинку сайту без сохранения
Хочу рассказать немного про генерацию картинок и их отдачу на лету, с помощью 1 примера, где надо было генерирвоать по полученым параметрам (от js) картинку и отдавать ее – эта картинка становилась фоном. Если о генерации ее вопросов не было, появился вопрос о том, как ее отдать. На 1 англйиском сайте нашел простео объяснение, что можно отдавать в request. И так, пример:
В html страничке, делаем такой скрипт:
<script type="text/javascript"> var height = innerHeight; var width = innerWidth; document.body.background = "/utils/genback/?width="+width+"&height="+height; document.body.style.backgroundAttachment = 'fixed'; document.body.style.backgroundPosition = 'right center'; </script>
Он узнает размера окна браузера и передает их скрипту по адресу /utils/genback/?width=”+width+”&height=”+height; с помощью GET запроса. В ответ получает картинку и устанавливает ее фоном. На стороне сервера имеем вот такой скрипт: /utils/genback/?width=”+width+”&height=”+height;
На стороне сервера у нас такой скрипт:
#-*-coding:utf8-*- from PIL import Image, ImageDraw from django.http import HttpResponse def generation_background(request): if request.method == 'GET': screen_width = int(request.GET['width']) screen_height = int(request.GET['height']) else: screen_width = 1024 screen_height = 768 COLOR = (240, 239, 239, 128) image = Image.new("RGBA", (screen_width, screen_height), (0,0,0,0)) draw = ImageDraw.Draw(image) draw.ellipse((100, -10, 100+screen_width, -30+screen_width), fill=COLOR, outline=COLOR) del draw response = HttpResponse(mimetype="image/png") image.save(response, 'PNG') return response
Данный скрипт, получает из GET запроса размеры, генерирует по ним фон (круг), устанавливает тип запроса image/png: response = HttpResponse(mimetype=”image/png”), сохраняет картинку в request и возвращает ее.
Конечно специалисты и так знают, а новичкам в django будет помощь
Тэги: Django, javascript, pil, Python

