爬取图片下载到本地的时候,总有一些图片显示不完全,例如这样:

错误图片展示


出现这种问题的原因是什么呢?

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图片脚本相关推荐

  1. Python实现base64编码文件转化为jpg/png/jpeg/格式图片

    Python实现base64编码文件转化为jpg/png/jpeg/格式图片 这个base64文件是图片转化的才行,不是随便找个base64文件都行的 base64图片文件qiaoba.py /9j/ ...

  2. Python检测数据不完整的JPG图片

    <OpenCV系列教程> 项目位置:OpenCV-Sample 代码位置:32-FindIncompleteJPG.py <Python检测JPEG.PNG是否完整(2)> 有 ...

  3. 某壁纸网站JS逆向+混淆代码扣取AST修复+Python批量下载教程+完整代码

    由于内容相对较多,无限debugger.JS逆向.混淆代码扣取修复.Python爬虫,篇幅较长,文字教程就不提供了, 完整python代码 # -*- coding: utf-8 -*- # @Aut ...

  4. [智慧农业]Python基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)

    1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...

  5. Python数据分析高薪实战第四天 python数据采集下载和提取保存

    06 获取数据:公开数据集与 DIY 数据集 首先恭喜你完成了第一部分的学习.现在你已经基本掌握了 Python 的基础并能够使用 Python 完成一些相对完整的功能的开发,是时候开始进入数据分析的 ...

  6. python爬虫 下载视频网站视频

    python爬虫 下载视频网站视频 xpath解析页面源码 requests.Session() 解决 status_code 302 网页重定向 selenium 获取网页遇到 iframe 标签解 ...

  7. 真香!用Python检测和识别车牌(附代码)

    车牌检测与识别技术用途广泛,可以用于道路系统.无票停车场.车辆门禁等.这项技术结合了计算机视觉和人工智能. 本文将使用Python创建一个车牌检测和识别程序.该程序对输入图像进行处理,检测和识别车牌, ...

  8. 如何使用 Python 检测和识别车牌(附 Python 代码)

    文章目录 创建Python环境 如何在您的计算机上安装Tesseract OCR? 技术提升 磨砺您的Python技能 车牌检测与识别技术用途广泛,可以用于道路系统.无票停车场.车辆门禁等.这项技术结 ...

  9. 人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记

    使用 dlib.OpenCV 和 Python 检测面部标记 今天,我们将使用dlib和OpenCV来检测图像中的面部标记.dlib的安装教程: https://wanghao.blog.csdn.n ...

最新文章

  1. leetcode944. 删列造序
  2. 哇!单细胞测序-配体受体互作分析原来可以这么简单又高大上!
  3. Linux CA证书与https讲解
  4. 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥
  5. 安卓传感器全解:注册、注销传感器、监听传感器,距离传感器、方向传感器、陀螺仪、加速计、磁场、气压传感器
  6. cocos2d-x3.0 关于CCAnimate 的一些资料
  7. vue显示农历_vue农历日历
  8. Java生成简单的验证码图片
  9. 训练loss不下降原因总结
  10. django orm查询经纬度最近距离的数据
  11. 16张SIM卡,8路5g多卡聚合路由器5g多卡汇聚路由器,多网融合,弱网通信
  12. 每日一结(10.31)
  13. 视频点播播放器如何实现加密下载?
  14. 2021.5.13如何安装APK到手机
  15. Apache2.2(OS 64)指定的网络名不再可用的处理
  16. 基本风速或者震级选取—重现期与超越概率
  17. 跟庄买股票得新技巧(2023.05.16)(绝密资料,只发一次)
  18. 刀光剑影下,恩怨情仇中的安卓
  19. matlab中hold all,matlab中的hold
  20. 最新kali之netsniff-ng

热门文章

  1. dp主机_怎样设置显示器DP接口信号优先?
  2. lisp读点坐标绘多义线_多段线点导出和导入点坐标成多段线(AutoLISP源码)——好用的AutoCAD点坐标导入导出工具...
  3. 【工大SCIR笔记】自然语言处理领域的数据增广方法
  4. 好人?坏人?做真实的人
  5. Linux远方拷贝文件指令,windows与linux系统互相拷贝文件借助PSCP命令实现
  6. Vue.filter过滤器存储单位换算按B、KB 、M、 G显示字节大小
  7. 已安装nvidia 显卡驱动时,cuda 安装
  8. Matlab多if语句(if,elseif,else)分段执行时遇到被上一个条件覆盖的问题及解决
  9. Professional Microsoft Office SharePoint Designer 2007
  10. QT编程错误解决——error: no matching function for call to