解决方案
第一种、删除截断图片
第二种、添加两行代码,如下
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
错误原因
首先看一下错误信息,大致意思是图像文件是损坏的,无法读取,后面37个bytes无法处理
OSError: image file is truncated (37 bytes not processed)
第一次运行程序时没有发生这样的错误,后面觉得图像文件的命名很杂乱,于是就写了一个重命名程序,对文件夹里的数据进行重新命名,程序如下所示
import os
path = './data/train/Image/'
# 获取该目录下所有文件,存入列表中
f = os.listdir(path)
n = 0
for i in f:
# 设置旧文件名(就是路径+文件名)
oldname = path + f[n]
# 设置新文件名
newname = path + 'Image_' + str(n + 1) + '.JPG'
# 用os模块中的rename方法对文件改名
os.rename(oldname, newname)
print(oldname, '======>', newname)
n +=

本文探讨了Python PIL库在处理JPEG图像时遇到的imagefileistruncated错误,分析了错误原因,提供了两种解决方案,一是删除损坏图像,二是设置LOAD_TRUNCATED_IMAGES为True。深入解析JPEG编码规则,对比正常与截断图像的区别,揭示了SOI和EOI在JPEG中的作用。
最低0.47元/天 解锁文章
1473





