我已经实现了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前端,我很困惑可以返回什么,以便可以在前端处理渲染图像。
答案 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')