Как получить сгенерированный образ PIL от Django REST Framework до внешнего интерфейса? - PullRequest
0 голосов
/ 19 февраля 2020

Я планировал создать веб-приложение, в котором я мог бы сделать запрос POST, чтобы сгенерировать изображение с PIL на серверной части и связать его с внешним интерфейсом через инфраструктуру REST с помощью GET, где я могу его загрузить. Я не хочу сохранять сгенерированное изображение в базе данных. Просто хочу создать его один раз только для скачивания. Любая идея о том, как я могу это осуществить?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020

Я нашел способ создать изображение, не сохраняя его в папке. Вы в основном сохраняете изображение в байтах и ​​конвертируете в base64.

views.py

import io
import base64
from PIL import Image
from django.shortcuts import render
from django.utils.safestring import mark_safe

def home(request):
  im_io = io.BytesIO()
  im = Image.new('RGBA', (300,300), (255, 214, 107))
  im_bg.text((10,0), test, fill='black')
  im.save(im_io, 'png', quality=70)
  im_io.seek(0)
  im_io_png = base64.b64encode(im_io.getvalue())
  context = im_io_png.decode('UTF-8')
  img_tag = mark_safe(f"<img src='data:image/png;base64, {context}'/>")
  return render(request, 'home.html', {'img_tag': img_tag })

home. html

<body>
  <h1>The Poster Generator </h1>
  <div>{{img_tag}}</div> <!-- Image will display here -->
</body>
0 голосов
/ 19 февраля 2020

Возможно, вы захотите использовать StreamingHttpResponse , который позволяет отправлять FileField (или ImageField, в этом отношении) в качестве ответа http.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...