【Python】检测下载不完整、半截灰色的JPG、JPEG、PNG图片脚本
爬取图片下载到本地的时候,总有一些图片显示不完全,例如这样:
错误图片展示
出现这种问题的原因是什么呢?
1、网络问题:网络不稳定,接收到的图片信息不完整。也就是说response有问题;
2、本地磁盘满了:有时候接收到的图片信息完整,但是本地磁盘存不下了,毕竟一个图片也要好几Mb呢。
如何检测错误图片呢?
试了很多方法,一个较好的方法就是判断jpg、jpeg、png文件结尾的标识。
JPG文件结尾标识:\xff\xd9
JPEG文件结尾标识:\xff\xd9
PNG文件结尾标识:\xaeB`\x82
检测不完整图片代码
"""
检测图片完整性
"""class CheckImage(object):def __init__(self, img):with open(img, "rb") as f:f.seek(-2, 2)self.img_text = f.read()f.close()def check_jpg_jpeg(self):"""检测jpg图片完整性,完整返回True,不完整返回False"""buf = self.img_textreturn buf.endswith(b'\xff\xd9')def check_png(self):"""检测png图片完整性,完整返回True,不完整返回False"""buf = self.img_textreturn buf.endswith(b'\xaeB`\x82')
检测某个文件夹下不完整的图片,并删除
"""
检测某个文件夹中不完整的图片,并删除
"""
import os
from CheckImage import CheckImageclass CheckBrockImage(object):def __init__(self, train_dir):self.train_dir = train_dirself.completeFile = 0self.incompleteFile = 0def get_imgs(self):"""遍历某个文件夹下的所有图片"""for file in os.listdir(self.train_dir):if os.path.splitext(file)[1].lower() == '.jpg' or os.path.splitext(file)[1].lower() == ".jpeg":ret = self.check_img(file)if ret:self.completeFile += 1else:self.incompleteFile = self.incompleteFile + 1# self.img_remove(file) # 删除不完整图片def img_remove(self, file):"""删除图片"""os.remove(self.train_dir + file)def check_img(self, img_file):"""检测图片完整性,图片完整返回True,图片不完整返回False"""return CheckImage(self.train_dir + img_file).check_jpg_jpeg()def run(self):"""执行文件"""self.get_imgs()print('不完整图片 : %d个' % self.incompleteFile)print('完整图片 : %d个' % self.completeFile)if __name__ == '__main__':train_dir = 'C:/Users/79993/Desktop/BrockImg/TextImg/' # 检测文件夹imgs = CheckBrockImage(train_dir)imgs.run()
【Python】检测下载不完整、半截灰色的JPG、JPEG、PNG图片脚本相关推荐
- Python实现base64编码文件转化为jpg/png/jpeg/格式图片
Python实现base64编码文件转化为jpg/png/jpeg/格式图片 这个base64文件是图片转化的才行,不是随便找个base64文件都行的 base64图片文件qiaoba.py /9j/ ...
- Python检测数据不完整的JPG图片
<OpenCV系列教程> 项目位置:OpenCV-Sample 代码位置:32-FindIncompleteJPG.py <Python检测JPEG.PNG是否完整(2)> 有 ...
- 某壁纸网站JS逆向+混淆代码扣取AST修复+Python批量下载教程+完整代码
由于内容相对较多,无限debugger.JS逆向.混淆代码扣取修复.Python爬虫,篇幅较长,文字教程就不提供了, 完整python代码 # -*- coding: utf-8 -*- # @Aut ...
- [智慧农业]Python基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)
1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...
- Python数据分析高薪实战第四天 python数据采集下载和提取保存
06 获取数据:公开数据集与 DIY 数据集 首先恭喜你完成了第一部分的学习.现在你已经基本掌握了 Python 的基础并能够使用 Python 完成一些相对完整的功能的开发,是时候开始进入数据分析的 ...
- python爬虫 下载视频网站视频
python爬虫 下载视频网站视频 xpath解析页面源码 requests.Session() 解决 status_code 302 网页重定向 selenium 获取网页遇到 iframe 标签解 ...
- 真香!用Python检测和识别车牌(附代码)
车牌检测与识别技术用途广泛,可以用于道路系统.无票停车场.车辆门禁等.这项技术结合了计算机视觉和人工智能. 本文将使用Python创建一个车牌检测和识别程序.该程序对输入图像进行处理,检测和识别车牌, ...
- 如何使用 Python 检测和识别车牌(附 Python 代码)
文章目录 创建Python环境 如何在您的计算机上安装Tesseract OCR? 技术提升 磨砺您的Python技能 车牌检测与识别技术用途广泛,可以用于道路系统.无票停车场.车辆门禁等.这项技术结 ...
- 人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记
使用 dlib.OpenCV 和 Python 检测面部标记 今天,我们将使用dlib和OpenCV来检测图像中的面部标记.dlib的安装教程: https://wanghao.blog.csdn.n ...
最新文章
- leetcode944. 删列造序
- 哇!单细胞测序-配体受体互作分析原来可以这么简单又高大上!
- Linux CA证书与https讲解
- 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥
- 安卓传感器全解:注册、注销传感器、监听传感器,距离传感器、方向传感器、陀螺仪、加速计、磁场、气压传感器
- cocos2d-x3.0 关于CCAnimate 的一些资料
- vue显示农历_vue农历日历
- Java生成简单的验证码图片
- 训练loss不下降原因总结
- django orm查询经纬度最近距离的数据
- 16张SIM卡,8路5g多卡聚合路由器5g多卡汇聚路由器,多网融合,弱网通信
- 每日一结(10.31)
- 视频点播播放器如何实现加密下载?
- 2021.5.13如何安装APK到手机
- Apache2.2(OS 64)指定的网络名不再可用的处理
- 基本风速或者震级选取—重现期与超越概率
- 跟庄买股票得新技巧(2023.05.16)(绝密资料,只发一次)
- 刀光剑影下,恩怨情仇中的安卓
- matlab中hold all,matlab中的hold
- 最新kali之netsniff-ng
热门文章
- dp主机_怎样设置显示器DP接口信号优先?
- lisp读点坐标绘多义线_多段线点导出和导入点坐标成多段线(AutoLISP源码)——好用的AutoCAD点坐标导入导出工具...
- 【工大SCIR笔记】自然语言处理领域的数据增广方法
- 好人?坏人?做真实的人
- Linux远方拷贝文件指令,windows与linux系统互相拷贝文件借助PSCP命令实现
- Vue.filter过滤器存储单位换算按B、KB 、M、 G显示字节大小
- 已安装nvidia 显卡驱动时,cuda 安装
- Matlab多if语句(if,elseif,else)分段执行时遇到被上一个条件覆盖的问题及解决
- Professional Microsoft Office SharePoint Designer 2007
- QT编程错误解决——error: no matching function for call to