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
我已经使用 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