【问题标题】:Django, retrieve image using url and save it ThumbnailerImageField of easy_thumbnailsDjango,使用 url 检索图像并将其保存为 easy_thumbnails 的 ThumbnailerImageField
【发布时间】:2016-03-27 04:56:26
【问题描述】:

我使用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])

【问题讨论】:

    标签: django easy-thumbnails


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 2013-04-18
      • 2019-09-08
      • 2023-03-21
      • 2013-11-26
      • 1970-01-01
      • 2021-10-27
      • 2020-12-14
      • 1970-01-01
      相关资源
      最近更新 更多