Python PIL,Image.load() 后出错
我在加载我的 .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 个回答
8
PIL(Python Imaging Library)使用了一种叫做“懒加载”的方式,这意味着在你对图片进行操作之前,程序并不会立即从文件中读取图片。第一次调用load
的时候,就是你第一次对图片进行操作,这时程序会检查文件格式是否有问题。第二次调用load
时,程序不会再重新读取文件,而是直接返回之前加载时保存的信息。
21
我之前也遇到过这个问题,后来找到了解决办法,具体内容可以在这里查看: https://stackoverflow.com/a/23575424/3622198。
在你的代码块之前,简单地添加以下内容:
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
...这样就可以正常使用了!
补充说明:这个方法对通过Pillow安装的PIL版本有效(使用“pip install pillow”),但可能不适用于默认安装的PIL。