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

用扩展名判断文件格式非常简单,但是有可能是错误的。 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图片的完整性实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python用imghdr模块识别图片格式实例解析

    imghdr模块 功能描述:imghdr模块用于识别图片的格式.它通过检测文件的前几个字节,从而判断图片的格式. 唯一一个API imghdr.what(file, h=None) 第一个参数file可以是用rb模式打开的file对象或者表示路径的字符串和PathLike对象.h参数是一段字节串.函数返回表示图片格式的字符串. >>> import imghdr >>> imghdr.what('test.jpg') 'jpeg' 具体的返回值和描述如下: 返回值 描述

  • python使用Image处理图片常用技巧分析

    本文实例讲述了python使用Image处理图片常用技巧.分享给大家供大家参考.具体分析如下: 使用python来处理图片是非常方便的,下面提供一小段python处理图片的代码,需要安装图像处理工具包PIL(Python Image Library). #coding=utf-8 import Image import urllib2 import StringIO import os #改变图片大小 def resize_img(img_path): try: img = Image.open

  • Python基于pillow判断图片完整性的方法

    本文实例讲述了Python基于pillow判断图片完整性的方法.分享给大家供大家参考,具体如下: 1.安装第三方库. pip install pillow 2.函数示例. #encoding=utf-8 #author: walker #date: 2016-07-26 #summary: 判断图片的有效性 import io from PIL import Image #判断文件是否为有效(完整)的图片 #输入参数为文件路径 def IsValidImage(pathfile): bValid

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

    用扩展名判断文件格式非常简单,但是有可能是错误的. 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] !

  • Python批量修改图片分辨率的实例代码

    前言:处理图片需要,需把图片都转换成1920*1280的大小, python实现很方便,需要导入图片处理的Image包和匹配的glob包,很简单,代码如下: img_path = glob.glob("D:/chosed/*.jpg") path_save = "D:/closedd" for file in img_path: name = os.path.join(path_save, file) im = Image.open(file) im.thumbna

  • Python判断telnet通不通的实例

    这个跟ping那个差不多,ping的那个脚本就是通过这个改了下,大体一致,不过telnet的不需要判断返回的字符串.快一些 这里具体需要telnet的ip是需要自己向定义好的数组中写的 我这里加了一个定时,是7200秒,也就是2小时 行了,上代码吧: #!/usr/bin/env python # coding: utf8 import telnetlib import time import codecs import os # telnet host def telnetdo(host, s

  • 基于python判断目录或者文件代码实例

    这篇文章主要介绍了基于python判断目录或者文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 判断目录是否存在 'isdir',删除目录时只有该目录为空才可以 'rmdir' import os if(os.path.isdir('D:/Python_workspace/spyder_space/test_各种功能/哈哈哈哈')): #判断目录是否存在 print('yes') os.rmdir('D:/Python_work

  • python批处理将图片进行放大实例代码

    目录 python批处理图片放大 python 图片比例缩放.批处理(分步骤完成) 总结 python批处理图片放大 有时候对于网络识别,将原始图片放进网络中并不能达到自己想要的效果,但是有时候如果将图片放大之后,识别率却能够达到意想不到的结果,现在提供一种将文件中的图片进行批处理放大的代码: import os ​ from PIL import Image import sys #获取path目录下的所有文件 def get_imlist(path): return[os.path.join

  • Python判断一个文件夹内哪些文件是图片的实例

    如下所示: def is_img(ext): ext = ext.lower() if ext == '.jpg': return True elif ext == '.png': return True elif ext == '.jpeg': return True elif ext == '.bmp': return True else: return False 调用时 for x in os.listdir(directory): if is_img(osp.splitext(x)[1

  • python判断图片宽度和高度后删除图片的方法

    本文实例讲述了python判断图片宽度和高度后删除图片的方法.分享给大家供大家参考.具体分析如下: Image对象有open方法却没有close方法,如果打开图片,判断图片高度和宽度,判断完成后希望删除或者给图片改名,是无法操作的,这段代码可以解决这个问题,注意open函数打开图片文件要使用二进制方式,及参数使用'rb',有的文章给出的只有个'r'参数,Image是无法open的 import os import Image fileName = 'c:/py/jb51.jpg' fp = op

  • python 判断是否为正小数和正整数的实例

    python 判断是否为正小数和正整数的实例 实现代码: def check_float(string): #支付时,输入的金额可能是小数,也可能是整数 s = str(string) if s.count('.') == 1: # 判断小数点个数 sl = s.split('.') # 按照小数点进行分割 left = sl[0] # 小数点前面的 right = sl[1] # 小数点后面的 if left.startswith('-') and left.count('-') == 1 a

  • python判断、获取一张图片主色调的2个实例

    python判断图片主色调,单个颜色: 复制代码 代码如下: #!/usr/bin/env python# -*- coding: utf-8 -*- import colorsysfrom PIL import Imageimport optparse def get_dominant_color(image):"""Find a PIL image's dominant color, returning an (r, g, b) tuple.""&qu

  • python利用urllib实现爬取京东网站商品图片的爬虫实例

    本例程使用urlib实现的,基于python2.7版本,采用beautifulsoup进行网页分析,没有第三方库的应该安装上之后才能运行,我用的IDE是pycharm,闲话少说,直接上代码! # -*- coding: utf-8 -* import re import os import urllib import urllib2 from bs4 import BeautifulSoup def craw(url,page): html1=urllib2.urlopen(url).read(

随机推荐