Django,使用 url 检索图像并将其保存在 easy_thumbnails 的 ThumbnailerImageField

Django, retrieve image using url and save it ThumbnailerImageField of easy_thumbnails

我已经使用 easy_thumbnails 在我的应用程序中存储图像。我有一个模型名称 Profile,其中有 picture 字段,即 ThumbnailerImageField。 在我的代码中,我使用 url 获取图像 我使用了以下代码

f = urllib.request.urlretrieve(picture_url)

现在,f[0] 是一个包含 /tmp/ 目录中文件路径的字符串。 我想将此图像保存到我的图片字段中。所以,我使用了以下代码

profile.picture.save(os.path.basename(picture), File(open(f[0])))

但问题是保存的文件由于某种原因损坏了,我无法打开它。而当我检查 /tmp/ 中的文件时,它是一个正确的图像文件。谁能指出我在这里做错了什么?

编辑:

我的字段定义如下 picture = ThumbnailerImageField(upload_to=name, max_length=3072)

name如下

def name(inst, fname):
f = sha256((fname + str(timezone.now())).encode('utf-8')).hexdigest()
f += fname
return '/'.join([inst.__class__.__name__, f])
from django.core.files.temp import NamedTemporaryFile
try:
    img_temp = NamedTemporaryFile(delete=True)
    img_temp.write(
        urllib2.urlopen(picture_url).read()
    )
    img_temp.flush()
    profile.picture.save('picture.jpg', File(img_temp))
    profile.save()
except:
    pass