Django rest framework - вернуть изображение в ответ - PullRequest
0 голосов
/ 29 мая 2018

Я звоню django остальные рамки получить API для создания штрих-кода.Работает нормально, когда я пытался сохранить его как изображение.

@api_view(['GET'])
def mybarcode(request):
    from elaphe import barcode

        code = barcode('datamatrix', "sampletext",
                       encoding='utf-8', scale=2,
                       options=dict(columns=24, rows=24),
                       margin=2, data_mode='50bits')
        code.save("mybarcode.jpg")
        return Response({'status': True})

Это прекрасно работает, когда я называю этот API как "http://127.0.0.1:9999/api/v1/testbarcode"." Будет создано изображение с именем "mybarcode.jpg", и API вернет свой статус как True.

Но я хотел бы вернуть изображение в результате этого вызова API. Потому что я должен включить его в тег изображения.

<img src='http://127.0.0.1:9999/api/v1/testbarcode' />

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Следует избегать возврата изображения / файла в представлении Django.Веб-серверы NGINX / Apache хорошо справляются с ними.

Сохраните образ в хранилище, например на локальном диске, AWS S3 или другом облачном хранилище.А затем визуализировать изображение в зависимости от того, где оно хранится.

В случае локального хранилища оно может быть доставлено с помощью веб-сервера.Изображения, хранящиеся в AWS S3, могут обслуживаться через AWS CDN Cloudfront.

0 голосов
/ 29 мая 2018

для преобразования изображения в base64

import base64
def(yourimagefile):
     with open(yourimagefile, "rb") as image_file:
         base64string = base64.b64encode(image_file.read())
         return base64string

подключите этот модуль после создания изображения и измените HTML для отображения содержимого base64

...