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
.
我正在尝试从 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
.