Django PIL: IOError Не удается идентифицировать файл изображения

Я изучаю Python и Django.

Изображение предоставляется пользователем с помощью form.ImageField(). Затем мне нужно обработать его, чтобы создать два изображения разного размера.

Когда я отправляю форму, Django возвращает следующую ошибку:

IOError at /add_event/
cannot identify image file

Я вызываю функцию изменения размера:

def create_event(owner_id, name, image):         
    image_thumb = image_resizer(image, name, '_t', 'events', 180, 120)  
    image_medium = image_resizer(image, name, '_m', 'events', 300, 200)

Я получаю сообщение об ошибке, когда image_resizer вызывается во второй раз:

def image_resizer(image, name, size, app_name, length, height): 
    im = Image.open(image)
    if im.mode != "RGB":
        im = im.convert("RGB")
    im = create_thumb(im, length, height)
    posit = str(MEDIA_ROOT)+'/'+app_name+'/'
    image_2 = im
    image_name = name + size +'.jpg' 
    imageurl = posit + image_name
    image_2.save(imageurl,'JPEG',quality=80)
    url_image='/'+app_name+'/'+image_name  
    return url_image

Версии:
Джанго 1.3.1
Питон 2.7.1
PIL 1.1.7

Я пытаюсь найти проблему, но не знаю, что делать. Заранее благодарю!

РЕДАКТИРОВАТЬ
Я решил переписать функцию; теперь он создает разные изображения в пакетном режиме:

Я вызываю функцию изменения размера:

url_array = image_resizer.resize_batch(image, image_name, [[180,120,'_t'], [300,200,'_m']], '/events/')  

поэтому:

image_thumb = url_array[0]
image_medium = url_array[1]

и функцию изменения размера:

def resize_batch(image, name, size_array, position):
    im = Image.open(image)
    if im.mode != "RGB":
        im = im.convert("RGB")
    url_array = []
    for size in size_array:
        new_im = create_thumb(im, size[0], size[1])
        posit = str(MEDIA_ROOT) + position
        image_name = name + size[2] +'.jpg' 
        imageurl = posit + image_name
        new_im.save(imageurl,'JPEG',quality=90)
        new_url_array = position + image_name
        url_array.append(new_url_array)
    return url_array

Спасибо всем!

7
задан enri 6 April 2012 в 15:01
поделиться