Python PIL,图片。 image.load()后出现错误
我试图加载我的.jpg文件,它引发错误,但是如果我再试一次,就没关系!为什么??Python PIL,图片。 image.load()后出现错误
我的代码和错误:
>>> 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>
>>>
谢谢!
PIL使用延迟加载,这意味着图像实际上并未从文件中读取,直到您尝试对其执行操作为止。第一次调用load
就是第一个操作,所以这就是检测到文件格式问题的时候。对load
的第二次调用不会再次读取文件,它只是返回文件加载时缓存的信息。
呵呵......只是现在我注意到OP提到的第二次调用'load'就是在这个例子中... – 2012-02-09 16:44:25
嗯,对不起,我没有告诉第一次调用image.show时发生了类似的错误。第二个调用image.show是ок。 – Hare 2012-02-09 17:44:33
@Hare,同样的推理适用。 “open”请求不会读取整个文件,所以它不会得到错误。无论是“load”还是“show”,第一个操作都会导致整个文件被读取,并检测到文件缺陷。 – 2012-02-09 18:27:16
我有这个相同的问题,并提出了我在这里讨论的解决方案:https://*.com/a/23575424/3622198。
某处你的代码块之前,只需添加以下内容:
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
...你应该是好去!
编辑:它看起来像这样有助于用枕头捆绑(“PIP安装枕头”)的版本PIL的,但可能不适合PIL的默认安装工作
的消息表明你绑加载图像是(可能)缺少一些尾随字节。为什么它会互相影响,我不知道,因为你不说图像是静态的,等等。 – 2012-02-09 13:41:59
谢谢你的回答!图像是静态的。 – Hare 2012-02-09 15:20:11