Python PIL,图像。在image.load()之后出错
我试图加载我的.jpg文件,它会引发错误,但如果我再试一次,就可以了!为什么 我的代码和错误:Python PIL,图像。在image.load()之后出错,python,python-imaging-library,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/pytho
>>> 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>
>>>
导入图像
>>>im1=Image.open('/tmp/test.jpg')
>>>im1.load()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib64/python2.7/site packages/PIL/ImageFile.py”,第201行,已加载
raise IOError(“图像文件被截断(%d字节未处理)”%len(b))
IOError:图像文件被截断(未处理0字节)
>>>im1.load()
>>>
谢谢大家! PIL使用延迟加载,这意味着在您尝试对其执行操作之前,不会从文件中读取图像。对
load
的第一个调用就是第一个操作,因此检测到文件格式有问题。对load
的第二次调用不会再次读取文件,它只返回加载文件时缓存的信息。我遇到了同样的问题,并提出了一个解决方案,我在这里讨论:
只需在代码块之前添加以下内容:
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
。。。你应该可以走了
编辑:这似乎对与Pill捆绑的PIL版本(“pip安装Pill”)有所帮助,但可能不适用于默认的PIL安装消息表明您要加载的图像(可能)缺少一些尾随字节。为什么它会间歇工作,我不知道,因为你没有说,如果图像是静态的,等等。谢谢你的回答!图像是静态的。呵呵。。。直到现在我才注意到OP提到的对
load
的第二个调用出现在示例中……嗯,对不起,我还没有告诉您,当第一个调用是image.show时会发生类似的错误。第二个调用image.show是Бimk_。@Hare,同样的推理也适用。open
请求不会读取整个文件,因此不会得到错误。第一个操作无论是load
还是show
都会导致读取整个文件,并检测到文件缺陷。