日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 判断图片是否损坏_检查图片是否损坏、图片后缀是否与实际图片类型对应 - Python...

發布時間:2025/3/19 python 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 判断图片是否损坏_检查图片是否损坏、图片后缀是否与实际图片类型对应 - Python... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖片工具

檢查圖片是否損壞

日常工作中,時常會需要用到圖片,有時候圖片在下載、解壓過程中會損壞,而如果一張一張點擊來檢查就太不Cool了,因此我想大家都需要一個檢查腳本;

測試圖片,0.jpg是正常的,broke.jpg是手動刪掉一點內容后異常的:

腳本運行結果:

代碼如下:

# 從本地判斷圖片是否損壞

def is_valid_image(path):

'''

檢查文件是否損壞

'''

try:

bValid = True

fileObj = open(path, 'rb') # 以二進制形式打開

buf = fileObj.read()

if not buf.startswith(b'\xff\xd8'): # 是否以\xff\xd8開頭

bValid = False

elif buf[6:10] in (b'JFIF', b'Exif'): # “JFIF”的ASCII碼

if not buf.rstrip(b'\0\r\n').endswith(b'\xff\xd9'): # 是否以\xff\xd9結尾

bValid = False

else:

try:

Image.open(fileObj).verify()

except Exception as e:

bValid = False

print(e)

except Exception as e:

return False

return bValid

flag1=is_valid_image(r'valid/0.jpg')

print(flag1)

flag1=is_valid_image(r'valid/broke.jpg')

print(flag1)

print ''

通過該腳本可以自動的對圖片進行校驗,后續是直接刪除還是將正常、損壞分開就交給大家發揮啦;

圖片后綴與實際類型匹配檢驗

我相信很多同學都有和我一樣的習慣,在jpg不滿足要求是,手動改為png,實際上大多數情況下,這種方式是可行的,但是在類型為gif等時,是無法直接打開的,這個需求的來源是我通過itchat做的自動微信內容備份工具

在下載聊天中的圖片時,經常會下載到gif但是實際為jpg或者png的情況,這就導致這些圖片無法直接展示,且需要手動改回實際類型,因此有了下面這個腳本;

類型校驗轉換前:

校驗log:

校驗及轉換結果:

代碼如下:

def is_type_wrong(path):

'''

檢查文件后綴是否與實際對應,例如實際是jpg,后綴是gif,導致打不開

'''

print path

real_type = path[path.rfind('.')+1:]

print real_type

if path.lower().endswith('.gif') or path.lower().endswith('.jpg') or path.lower().endswith('.png'):

header = []

with open(path, 'rb') as f:

while(len(header)<5):

header.append(f.read(1))

print header

tmp = real_type

if (header[0] == '\x47' and header[1] and '\x49' and header[2] == '\x46' and header[3] == '\x38'):

tmp = 'gif'

if (header[0] == '\xff' and header[1] == '\xd8'):

tmp = 'jpg'

if (header[0] == '\x89' and header[1] == '\x50' and header[2] == '\x4e' and header[3] == '\x47' and header[4] == '\x0D'):

tmp = 'png'

print tmp

if real_type != tmp:

return True,tmp

return False,real_type

if __name__ == '__main__':

is_wrong,real_type=is_type_wrong('type/1.gif')

if is_wrong:

os.system('cp type/1.gif type/1.'+real_type)

is_wrong,real_type=is_type_wrong('type/2.gif')

if is_wrong:

os.system('cp type/2.gif type/2.'+real_type)

is_wrong,real_type=is_type_wrong('type/3.gif')

if is_wrong:

os.system('cp type/3.gif type/3.'+real_type)

is_wrong,real_type=is_type_wrong('type/4.gif')

if is_wrong:

os.system('cp type/4.gif type/4.'+real_type)

通過該腳本,可以自動的對圖片的后綴以及其實際類型進行校驗,配合linux的cp、mv等命令很容易的實現圖片類型修正的功能,還是挺有用的感覺;

小結

實際上這兩個腳本的運行都是依賴于圖片文件自身具備的格式,對其固定格式進行檢查,實現完整性、正確性的檢驗,大家也可以嘗試這進行手動的修改類型,比如jpg改為png,手動損壞一個圖片文件,比如直接txt打開后刪掉一段即可來試試看哈;

最后

大家可以到我的Github上看看有沒有其他需要的東西,目前主要是自己做的機器學習項目、Python各種腳本工具、數據分析挖掘項目以及Follow的大佬、Fork的項目等:

https://github.com/NemoHoHaloAi

總結

以上是生活随笔為你收集整理的python 判断图片是否损坏_检查图片是否损坏、图片后缀是否与实际图片类型对应 - Python...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。