欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python判斷jpeg圖片的完整性實(shí)例

 更新時(shí)間:2019年06月10日 11:37:19   作者:qiyuanxiong  
今天小編就為大家分享一篇使用python判斷jpeg圖片的完整性實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

用擴(kuò)展名判斷文件格式非常簡單,但是有可能是錯(cuò)誤的。 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

應(yīng)用場景:判斷image文件夾中的jpeg文件是否完整,代碼如下:

#coding=utf-8
#summary: 判斷圖片的有效性
import io
import os
 
from PIL import Image
#判斷文件是否為有效(完整)的圖片
#輸入?yún)?shù)為文件路徑
#會(huì)出現(xiàn)漏檢的情況
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是否包含結(jié)束字段 
  else: 
    return True
 
#利用PIL庫進(jìn)行jpeg格式判定,但有些沒有結(jié)束字段的文件檢測不出來
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圖片的完整性實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python django搭建layui提交表單,表格,圖標(biāo)的實(shí)例

    Python django搭建layui提交表單,表格,圖標(biāo)的實(shí)例

    今天小編就為大家分享一篇Python django搭建layui提交表單,表格,圖標(biāo)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 淺談Python 對象內(nèi)存占用

    淺談Python 對象內(nèi)存占用

    下面小編就為大家?guī)硪黄獪\談Python 對象內(nèi)存占用。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • Python中的流程控制詳解

    Python中的流程控制詳解

    這篇文章主要介紹了Python中的流程控制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • python?包之?Pillow?圖像處理教程分享

    python?包之?Pillow?圖像處理教程分享

    這篇文章主要介紹了python?包之?Pillow?圖像處理教程分享,文章基于Python的相關(guān)資料展開主題相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • 在Python中使用代理IP的方法詳解

    在Python中使用代理IP的方法詳解

    在網(wǎng)絡(luò)爬蟲開發(fā)中,使用代理IP是非常常見的技巧,Python作為一門強(qiáng)大的編程語言,也提供了很多方法來使用代理IP,下面,我將就如何在Python中使用代理IP進(jìn)行詳細(xì)的闡述,并舉例說明,需要的朋友可以參考下
    2023-07-07
  • 淺談python拋出異常、自定義異常, 傳遞異常

    淺談python拋出異常、自定義異常, 傳遞異常

    本文給大家簡單匯總了下Python中拋出異常、自定義異常,傳遞異常的簡單應(yīng)用,有需要的小伙伴可以參考下
    2016-06-06
  • 解讀dataframe中有關(guān)inf的處理技巧

    解讀dataframe中有關(guān)inf的處理技巧

    這篇文章主要介紹了解讀dataframe中有關(guān)inf的處理技巧,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python虛擬環(huán)境conda的安裝使用教程

    Python虛擬環(huán)境conda的安裝使用教程

    在性能和資源占用方面,venv?通常更適合輕量級項(xiàng)目、純Python應(yīng)用以及對資源敏感的場景,其簡單快速的特點(diǎn)使得環(huán)境創(chuàng)建和管理更為高效,這篇文章主要介紹了Python虛擬環(huán)境conda的安裝使用教程,需要的朋友可以參考下
    2024-03-03
  • Python實(shí)現(xiàn)注冊、登錄小程序功能

    Python實(shí)現(xiàn)注冊、登錄小程序功能

    本文通過實(shí)例代碼給大家介紹了Python實(shí)現(xiàn)登錄、注冊小程序功能,代碼簡單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-09-09
  • 詳解Django中CBV(Class Base Views)模型源碼分析

    詳解Django中CBV(Class Base Views)模型源碼分析

    這篇文章主要介紹了詳解Django中CBV(Class Base Views)模型源碼分析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論