使用PIL在Django中保存重新调整大小的图像时出现错误的文件描述符错误

时间:2014-09-09 07:00:22

标签: python django

我是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)

知道发生了什么事吗?

0 个答案:

没有答案