日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

使用python判斷jpeg圖片的完整性實例

系統 1915 0

用擴展名判斷文件格式非常簡單,但是有可能是錯誤的。 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圖片的完整性實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 陇西县| 安平县| 淮南市| 安陆市| 肇州县| 射洪县| 马关县| 隆尧县| 库伦旗| 和顺县| 奇台县| 岑巩县| 吴川市| 南昌市| 拜泉县| 大连市| 堆龙德庆县| 横峰县| 五寨县| 綦江县| 阜宁县| 会宁县| 彰化县| 永嘉县| 甘泉县| 枣强县| 夏邑县| 繁峙县| 泗阳县| 浦城县| 治县。| 佛冈县| 钟山县| 长汀县| 玉山县| 土默特右旗| 庐江县| 农安县| 娱乐| 通海县| 望城县|