Python PIL, изображение. Ошибка после image.load () - PullRequest
5 голосов
/ 09 февраля 2012

Я пытаюсь загрузить свой файл .jpg, и он вызывает ошибку, но если я попробую еще раз, все в порядке!Почему ??

Мой код и ошибка:

>>> import Image
>>> im1 = Image.open('/tmp/test.jpg')
>>> im1.load()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/PIL/ImageFile.py", line 201, in load
raise IOError("image file is truncated (%d bytes not processed)" % len(b))
IOError: image file is truncated (0 bytes not processed)
>>> im1.load()
<PixelAccess object at 0x7feffc2a1170>
>>>

Спасибо!

Ответы [ 2 ]

20 голосов
/ 10 мая 2014

У меня была такая же проблема, и я нашел решение, которое я обсуждаю здесь: https://stackoverflow.com/a/23575424/3622198.

Где-то перед вашим блоком кода, просто добавьте следующее:

from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

... и тебе надо идти!

РЕДАКТИРОВАТЬ: похоже, что это помогает для версии PIL в комплекте с подушкой ("pip install pillow"), но может не работать для установок по умолчанию PIL

8 голосов
/ 09 февраля 2012

PIL использует ленивую загрузку, что означает, что изображение на самом деле не читается из файла, пока вы не попытаетесь выполнить действие с ним.Первый вызов load - это первое действие, так что именно тогда обнаруживается проблема с форматом файла.Второй вызов load больше не читает файл, он просто возвращает информацию, которая была кэширована при загрузке файла.

...