Django - 将二进制流转换为图像

Django - Converting a Binary stream to an Image

我正在尝试从 url 获取图像并将其 return 发送到 ModelAdmin 以将其显示在 table 的新列中。

我在 admin.py 文件中尝试了以下代码:

def new_field(self, obj): r = requests.get('https://abcd.com/image') return r.content

代码没有给我任何错误,但它 return 是一个长二进制字符串而不是图像本身。

如何传递图像本身,或将二进制内容转换为图像?

如果您不想只显示图片,则不需要下载图片。

def new_field(self, obj):
    url = 'https://abcd.com/image'
    return '<img src="{}" />'.format(url)

new_field.allow_tags = True # it is important!!!

您可以在这里使用 NamedTemporaryFile [GitHub]。例如:

from django.core.files import File
from django.core.files.temp import <b>NamedTemporaryFile</b>

def store_image_from_source(self, obj):
    img = NamedTemporaryFile()
    r = requests.get('https://abcd.com/image')
    img.write(r.content)
    img.flush()
    file = File(img)
    obj.my_img_attr.save(<i>'filename.jpeg'</i>, file, save=True)

这里 'filename.jpeg' 是文件的名称,就好像您上传的文件带有 ModelForm.