Python PIL,图像。 image.load()后出错

时间:2012-02-09 13:27:53

标签: python python-imaging-library

我正在尝试加载我的.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 个答案:

答案 0 :(得分:20)

我遇到了同样的问题,并提出了一个我在此讨论的解决方案:https://stackoverflow.com/a/23575424/3622198

在代码块之前的某个地方,只需添加以下内容:

from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

......你应该好好去!

编辑:看起来这对Pillow捆绑的PIL版本有帮助(&#34; pip install pillow&#34;),但可能不适用于PIL的默认安装

答案 1 :(得分:8)

PIL使用延迟加载,这意味着在您尝试对其执行操作之前,实际上不会从文件中读取图像。对load的第一次调用是第一次操作,因此在检测到文件格式的问题时。对load的第二次调用不会再次读取文件,它只返回加载文件时缓存的信息。