使用python判断jpeg图片的完整性实例


Posted in Python onJune 10, 2019

用扩展名判断文件格式非常简单,但是有可能是错误的。 jpeg文件有固定的文件头,其文件头的格式如下:

Start Marker | JFIF Marker | Header Length | Identifier
 
0xff, 0xd8  | 0xff, 0xe0 |  2-bytes  | "JFIF\0"

所以可以通过文件头的方式快速判断文件格式:

def is_jpg(filename):
  data = open(filename,'rb').read(11)
  if data[:4] != '\xff\xd8\xff\xe0' and data[:4]!='\xff\xd8\xff\xe1': 
    return False
  if data[6:] != 'JFIF\0' and data[6:] != 'Exif\0': 
    return False
  return True

也可以通过PIL类库来做判断:

from PIL import Image
def is_jpg(filename):
  try:
    i=Image.open(filename)
    return i.format =='JPEG'
  except IOError:
    return Fals

应用场景:判断image文件夹中的jpeg文件是否完整,代码如下:

#coding=utf-8
#summary: 判断图片的有效性
import io
import os
 
from PIL import Image
#判断文件是否为有效(完整)的图片
#输入参数为文件路径
#会出现漏检的情况
def IsValidImage(pathfile):
 bValid = True
 try:
  Image.open(pathfile).verify()
 except:
  bValid = False
 return bValid
 
 
def is_valid_jpg(jpg_file): 
  """判断JPG文件下载是否完整 
  """ 
  if jpg_file.split('.')[-1].lower() == 'jpg': 
    with open(jpg_file, 'rb') as f: 
      f.seek(-2, 2) 
      return f.read() == '\xff\xd9' #判定jpg是否包含结束字段 
  else: 
    return True
 
#利用PIL库进行jpeg格式判定,但有些没有结束字段的文件检测不出来
def is_jpg(filename):
  try:
    i=Image.open(filename)
    return i.format =='JPEG'
  except IOError:
    return False
 
allfiles=os.listdir('image')
log_file=open('img_lossinfo.txt','w')
log = open('img_r.txt','w')
log_w=open('img_w.txt','w')
log1=open('img_jpeg.txt','w')
log2=open('img_notjpg.txt','w')
for i in allfiles:
#if 1:
	if i[-4:]=='.jpg':
		f=os.path.join('image',i)
		value=IsValidImage(f)
		if not value:
			log_file.write(i+'\n')
		if is_valid_jpg(f):
			print f
			log.write(i+'\n')
		else:
			log_w.write(i+'\n')
		if is_jpg(f):
			log1.write(i+'\n')
		else:
			log2.write(i+'\n')

以上这篇使用python判断jpeg图片的完整性实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中操作时间之tzset()方法的使用教程
May 22 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
python线程中同步锁详解
Apr 27 Python
python实现中文文本分句的例子
Jul 15 Python
python数据归一化及三种方法详解
Aug 06 Python
python SVD压缩图像的实现代码
Nov 05 Python
python中数据库like模糊查询方式
Mar 02 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Python unittest基本使用方法代码实例
Jun 29 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
关于Python作用域自学总结
Jun 10 #Python
Python读写文件基础知识点
Jun 10 #Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 #Python
python三大神器之fabric使用教程
Jun 10 #Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 #Python
Python中的十大图像处理工具(小结)
Jun 10 #Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 #Python
You might like
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
python list删除元素时要注意的坑点分享
2018/04/18 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
linux面试题参考答案(7)
2014/07/24 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
对祖国的寄语大全
2014/04/11 职场文书
产品开发计划书
2014/04/27 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书