Python程序中PIL Image "image file is truncated"问题分析与解决

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python程序中PIL Image "image file is truncated"问题分析与解决

解决方案

第一种、删除截断图片
第二种、添加两行代码,如下

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 +=<
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值