Python PIL,Image.load() 后出错

7 投票
2 回答
13870 浏览
提问于 2025-04-17 12:40

我在加载我的 .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。

撰写回答