我是Django的新手。最近我正在开发一个与图像相关的网站。我有一个缩略图页面,其中将显示图像。现在我想重新调整大小图像的比例。这就是为什么我写了以下内容我的 imageThumbnail 视图中的代码,
def imageThumbnail(request,template = 'base.html',page_template = 'photo/showphoto.html'):
photo_list = Photo.objects.order_by('-uploaded_time')
basewidth = 300
for photo_ratio in photo_list:
img =Image.open(photo_ratio.photo)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize),PIL.Image.ANTIALIAS)
resized_img=img.save(photo_ratio.photo)
context = {}
context.update({
'photo_list': resized_img,
'page_template': page_template,
})
if request.is_ajax():
template = page_template
return render_to_response(template,context,context_instance=RequestContext(request))
这里照片是我的型号名称。现在问题是,我正面临一个类似的错误
IOError at /showphoto/
[Errno 9] Bad file descriptor
表示我保存已调整大小的图像的行
resized_img=img.save(photo_ratio.photo)
现在我的问题是,我在那条线上做了什么错?提到,我正在使用PIL(Python图像库),我已导入 PIL 和图像来自PIL。虽然我是Django和Python的新手,但我无法弄清楚我的代码中出了什么问题。
更新 我犯的错误是我没有将这些图像保存在目录或临时目录中,这就是为什么我要像这样重写我的代码,
def imageThumbnail(request,template = 'base.html',page_template = 'photo/showphoto.html'):
import os
SETTINGS_DIR = os.path.dirname(__file__)
PROJECT_PATH = os.path.join(SETTINGS_DIR,os.pardir)
PROJECT_PATH = os.path.abspath(PROJECT_PATH)
photo_list = Photo.objects.order_by('-uploaded_time')
basewidth = 300
for photo_ratio in photo_list:
img =Image.open(photo_ratio.photo)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize),Image.ANTIALIAS)
temp_images =os.path.join(PROJECT_PATH,'media',photo_ratio.photo)
resized_img=img.save(temp_images)
但现在我面临错误,
AttributeError at /showphoto/
'ImageFieldFile' object has no attribute 'startswith'
at
temp_images =os.path.join(PROJECT_PATH,'media',photo_ratio.photo)
知道发生了什么事吗?