亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python用imghdr模塊識(shí)別圖片格式實(shí)例解析

 更新時(shí)間:2018年01月11日 11:44:38   作者:GanZiQim  
這篇文章主要介紹了Python用imghdr模塊識(shí)別圖片格式實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下

imghdr模塊

功能描述:imghdr模塊用于識(shí)別圖片的格式。它通過檢測(cè)文件的前幾個(gè)字節(jié),從而判斷圖片的格式。

唯一一個(gè)API

imghdr.what(file, h=None)

第一個(gè)參數(shù)file可以是用rb模式打開的file對(duì)象或者表示路徑的字符串和PathLike對(duì)象。h參數(shù)是一段字節(jié)串。函數(shù)返回表示圖片格式的字符串。

>>> import imghdr
>>> imghdr.what('test.jpg')
'jpeg'

具體的返回值和描述如下:

返回值 描述 檢測(cè)方式
jpeg 用JFIF或者Exif格式保存的JPEG圖片 第7到第10個(gè)字節(jié)是b'JFIF'或者b'Exif'
png 可移植網(wǎng)絡(luò)圖形格式(Portable Network Graphic Format) 以字節(jié)串b'\x89PNG\r\n\x1a\n'開頭
gif GIF(Graphics Interchange Format)的87版本和89版本 前6個(gè)字節(jié)為b'GIF87a'或者b'GIF89a'
tiff TIFF(Tag Image File Format)的兩種字節(jié)順序 前兩個(gè)字節(jié)為b'MM'或者b'II'
rgb SGI ImgLib 以字節(jié)串b'\x01\xda'開頭
pbm Portable Bitmap 第1個(gè)字節(jié)為b'P',第2個(gè)字節(jié)為b'1'或b'4',第3個(gè)字節(jié)為b'\t'或b'\n'或b'\r'
pgm Portable Graymap Files 第1個(gè)字節(jié)為b'P',第2個(gè)字節(jié)為b'2'或b'5',第3個(gè)字節(jié)為b'\t'或b'\n'或b'\r'
ppm Portable Pixmap Files 第1個(gè)字節(jié)為b'P',第2個(gè)字節(jié)為b'3'或b'6',第3個(gè)字節(jié)為b'\t'或b'\n'或b'\r'
rast Sun Raster 以字節(jié)串b'\x59\xA6\x6A\x95'開頭
xbm X Bitmap Files 以字節(jié)串b'#define ‘開頭
bmp Bitmap,Windows標(biāo)準(zhǔn)圖像文件格式 以字節(jié)串b'BM'開頭
webp 谷歌的WebP格式,Python3.5加入 以字節(jié)串b'RIFF'開頭并且第9到第12個(gè)字節(jié)為b'WEBP'
exr OpenEXR,Python3.5加入 以字節(jié)串b'\x76\x2f\x31\x01'開頭

模塊內(nèi)部缺陷

當(dāng)h參數(shù)不為空時(shí),模塊會(huì)忽略掉file參數(shù),直接檢測(cè)h參數(shù),但此時(shí)file參數(shù)又是必須提供的,算是一個(gè)設(shè)計(jì)缺陷吧。博主個(gè)人感覺這個(gè)h參數(shù)根本沒有存在的意義,沒必要放在參數(shù)列表里面。

>>> import imghdr
>>> imghdr.what('test.jpg', b'\x89PNG\r\n\x1a\n')
'png'
>>>

自定義檢測(cè)流程

imghdr內(nèi)部使用了test_jpeg、test_png、test_gif等函數(shù)檢測(cè)文件的格式。模塊內(nèi)部維護(hù)了一個(gè)函數(shù)列表imghdr.tests,每次調(diào)用what函數(shù)的時(shí)候,會(huì)按列表里的順序調(diào)用檢測(cè)函數(shù),當(dāng)檢測(cè)函數(shù)返回結(jié)果時(shí)退出循環(huán)。用戶可以通過修改這個(gè)列表達(dá)到修改檢測(cè)流程的目的。同時(shí),也可以自行添加檢測(cè)函數(shù)到列表里面。

下面這個(gè)例子,博主添加了一個(gè)函數(shù)放在檢測(cè)流程的最后提示文件不是圖片:

>>> import imghdr
>>> def final(h, f):
... print("This file isn\'t a image!")
...
>>> imghdr.tests.append(final)
>>> imghdr.what("imghdr.md")
This file isn't a image!

自行添加檢測(cè)函數(shù)需要接收兩個(gè)參數(shù)h和f,h是用來檢測(cè)的字節(jié)串,f是file對(duì)象。但是在模塊內(nèi)部自帶的檢測(cè)函數(shù)都是沒用到這個(gè)f參數(shù)的…

命令行啟動(dòng)imghdr模塊

博主讀源碼的時(shí)候發(fā)現(xiàn)了官方文檔里面沒提到的兩個(gè)函數(shù),提供了直接用命令行啟動(dòng)imghdr模塊的方法。

只需要調(diào)用python -m imghdr [-r] file1 file2...就可以直接檢測(cè)文件的類型。file可以是文件也可以是文件夾。該命令默認(rèn)只檢測(cè)文件夾下一層的文件類型,如果需要遞歸檢測(cè),則加上-r參數(shù)。

每個(gè)文件以”文件名: 文件類型/None”的形式打印一行輸出結(jié)果。

總結(jié):可能是因?yàn)槭褂玫娜松俚脑?,imghdr這個(gè)模塊內(nèi)部有挺多小問題,不過只要老老實(shí)實(shí)按照官方提供的文檔使用是不會(huì)出事的。博主后面試著改一下這個(gè)模塊然后pr上去。

以上就是本文關(guān)于Python用imghdr模塊識(shí)別圖片格式實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • python實(shí)現(xiàn)在windows下操作word的方法

    python實(shí)現(xiàn)在windows下操作word的方法

    這篇文章主要介紹了python實(shí)現(xiàn)在windows下操作word的方法,涉及Python操作word實(shí)現(xiàn)打開、插入、轉(zhuǎn)換、打印等操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python 獲取list特定元素下標(biāo)的實(shí)例講解

    python 獲取list特定元素下標(biāo)的實(shí)例講解

    下面小編就為大家分享一篇python 獲取list特定元素下標(biāo)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 解決python爬蟲中有中文的url問題

    解決python爬蟲中有中文的url問題

    今天小編就為大家分享一篇解決python爬蟲中有中文的url問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python django事務(wù)transaction源碼分析詳解

    python django事務(wù)transaction源碼分析詳解

    這篇文章主要介紹了python django事務(wù)transaction源碼分析詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 基于PyQT5制作一個(gè)二維碼生成器

    基于PyQT5制作一個(gè)二維碼生成器

    這篇文章主要介紹了利用PyQT5制作一個(gè)簡(jiǎn)單的二維碼生成器,并打包成exe可執(zhí)行程序。文中的示例代碼講解詳細(xì),感興趣的同學(xué)可以了解一下
    2021-12-12
  • NumPy內(nèi)存布局的實(shí)現(xiàn)

    NumPy內(nèi)存布局的實(shí)現(xiàn)

    本文主要介紹了NumPy內(nèi)存布局的實(shí)現(xiàn),括連續(xù)內(nèi)存布局(C順序)和分散內(nèi)存布局(Fortran順序),并通過實(shí)例演示如何操作數(shù)組的內(nèi)存布局,感興趣的可以了解一下
    2024-01-01
  • python 將字符串轉(zhuǎn)換成字典dict

    python 將字符串轉(zhuǎn)換成字典dict

    將字符串轉(zhuǎn)化成字典dict類型?這個(gè)可以用python的標(biāo)準(zhǔn)庫(kù)simplejson 轉(zhuǎn)換為JSON格式。
    2013-03-03
  • Python3搜索及替換文件中文本的方法

    Python3搜索及替換文件中文本的方法

    這篇文章主要介紹了Python3搜索及替換文件中文本的方法,涉及Python操作文件及字符串的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python給圖像添加噪聲具體操作

    Python給圖像添加噪聲具體操作

    在本文里我們給大家整理了關(guān)于Python如何給圖像添加噪聲的相關(guān)知識(shí)點(diǎn)以及操作步驟,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • Python3 正在毀滅 Python的原因分析

    Python3 正在毀滅 Python的原因分析

    Python 2強(qiáng)大的一個(gè)地方是它身后巨大的第三方庫(kù),恩,可以做任何事。Python 3沒有這個(gè)。是的,很多庫(kù)已經(jīng)移植了,但是仍然有數(shù)以十倍的庫(kù)沒有移植過去,而且也不太容易
    2014-11-11

最新評(píng)論