Django休息从视图返回基地64

时间:2016-11-18 12:55:55

标签: django django-rest-framework

我已经实现了django-photologue,我试图从我的django视图返回base64编码的图像,如下所示:

@api_view(('GET',))
def get_gallery(request, id):
    gallery = Gallery.objects.get(id=id)
    data = []

    for photo in gallery.sample():
        data.append(photo.image_url)
    return Response(data)

Response(data)我得

["data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\nbWFn --string continues--"] 

注意' \ n'在字符串

我正在尝试这个(http://codebeautify.org/base64-to-image-converter)转换器,看看我是否收回了图像,并且返回的响应失败了。

如果我将其更改为HttpResponse(data),我会:

data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG --string continuous--

注意' \ n'现在已经不见了当我在此转换器中尝试时,此结果呈现图像。

从Django视图返回这样的base64图像的正确方法是什么?我正在使用angular2前端,我很困惑可以返回什么,以便可以在前端处理渲染图像。

1 个答案:

答案 0 :(得分:0)

这就是我所看到的:

import mimetypes
from base64 import b64decode, b64encode

def encode_b64(value):
    value.file.seek(0)
    mime_type, encoding = mimetypes.guess_type(value.name)
    if not mime_type:
        mime_type = 'image/png'
    data = value.file.read()
    image_data = bytes(
        'data:' + mime_type + ';base64,', encoding='UTF-8') + b64encode(data)
    return image_data  # or str(image_data, 'utf-8')