Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PIL,图像。在image.load()之后出错_Python_Python Imaging Library - Fatal编程技术网

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

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

我试图加载我的.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>
>>>
导入图像 >>>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
都会导致读取整个文件,并检测到文件缺陷。