繁体   English   中英

如何从响应中获取图像并将其保存在models.ImageField中

[英]How to get image from response and save it in models.ImageField

问这个我意识到这个话题很常见,也许已经多次讨论了。 但它仍然不清楚,所以我试图从响应中获取图像文件,调整大小并将其保存在模型中。 我处理错误:

/ saveimage /'InMemoryUploadedFile'对象中的AttributeError没有属性'get'

我的代码是这样的:

import Image
import cStringIO
from django.core.files.uploadedfile import InMemoryUploadedFile
def get_and_save_image():
    file = cStringIO.StringIO()
    size = (200,200)
    color = (255,0,0,0)
    image = Image.new("RGBA", size, color)
    image.save(file, format='JPEG')
    image_file = InMemoryUploadedFile(file, None, 'foo.jpg', 'jpeg', None, None)
    image_file.seek(0)
    return image_file

Http响应:

FILES:
some_image = <InMemoryUploadedFile: image.jpg (image/jpeg)>

这是将图像保存到ImageField的正确方法吗? 提前致谢。

您可以通过以下两种方式执行此操作:

  1. 将图像保存在models.ImageField中,然后在响应中返回图像的url,您可以在javascript中创建image元素并添加url。

  2. 在base64中对图像的数据进行编码并将其作为字符串返回,您可以在前端轻松使用该字符串。 这是一个例子:

后端:

from PIL import Image
from io import BytesIO
import base64
def get_and_save_image():
    size = (200,200)
    color = (255,0,0,0)
    image = Image.new("RGBA", size, color)
    img_buffer = BytesIO()
    image.save(img_buffer, format='JPEG')
    response_string = base64.b64encode(img_buffer.getvalue())
    return response_string

前端:

<img src="data:image/jpg;base64,{{ THE_RESPONSE_STRING }}">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM