Python PIL «IOError: файл изображения урезан» с большими изображениями

Я думаю, что эта проблема не связана с Zope. Тем не менее я объясню, что я пытаюсь сделать:

Я использую PUT_factory в Zope для загрузки изображений в ZODB по FTP. Загруженное изображение сохраняется как изображение Zope внутри вновь созданного контейнерного объекта. Это прекрасно работает, но я хочу изменить размер изображения, если оно превышает определенный размер (ширина и высота). Поэтому я использую функцию миниатюр PIL для изменения их размера, то есть до 200x200. Это работает нормально, если загруженные изображения относительно маленькие. Я не проверил точный лимит, но 976x1296px все еще в порядке.

С большими картинками я получаю:

Module PIL.Image, line 1559, in thumbnail
Module PIL.ImageFile, line 201, in load
IOError: image file is truncated (nn bytes not processed).

Я тестировал много JPEG с моей камеры. Я не думаю, что они все усечены.

Вот мой код:

if img and img.meta_type == 'Image':
  pilImg = PIL.Image.open( StringIO(str(img.data)) )
elif imgData:
  pilImg = PIL.Image.open( StringIO(imgData) )

pilImg.thumbnail((width, height), PIL.Image.ANTIALIAS)

Поскольку я использую PUT_factory, у меня нет файлового объекта, я использую либо необработанные данные с фабрики, либо ранее созданный (Zope) объект Image.

Я слышал, что PIL обрабатывает данные изображения по-разному при превышении определенного размера, но я не знаю, как настроить свой код. Или это связано с ленивой загрузкой PIL?

Ответы на вопрос(4)

Ваш ответ на вопрос