最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python用imghdr模塊識別圖片格式實例解析

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

imghdr模塊

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

唯一一個API

imghdr.what(file, h=None)

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

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

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

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

模塊內(nèi)部缺陷

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

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

自定義檢測流程

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

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

>>> 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!

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

命令行啟動imghdr模塊

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

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

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

總結(jié):可能是因為使用的人少的原因,imghdr這個模塊內(nèi)部有挺多小問題,不過只要老老實實按照官方提供的文檔使用是不會出事的。博主后面試著改一下這個模塊然后pr上去。

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

相關文章

  • Django 登錄注冊的實現(xiàn)示例

    Django 登錄注冊的實現(xiàn)示例

    本文主要介紹了Django 登錄注冊的實現(xiàn)示例,這是做網(wǎng)頁登錄和注冊基本上都是必要一步,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • python中reshape函數(shù)用法示例詳解

    python中reshape函數(shù)用法示例詳解

    reshape函數(shù)是Numpy庫中的一個函數(shù),可以用于改變一個數(shù)組的形狀,例如將一個二維數(shù)組轉(zhuǎn)換成一個三維數(shù)組,這篇文章主要介紹了python中reshape函數(shù)用法詳解,需要的朋友可以參考下
    2023-09-09
  • python實現(xiàn)學生信息管理系統(tǒng)(面向?qū)ο?

    python實現(xiàn)學生信息管理系統(tǒng)(面向?qū)ο?

    這篇文章主要介紹了python實現(xiàn)面向?qū)ο蟀鎸W生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • python機器學習高數(shù)篇之泰勒公式

    python機器學習高數(shù)篇之泰勒公式

    這篇文章主要介紹了python機器學習高數(shù)篇之函數(shù)極限和導數(shù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python range()函數(shù)取反序遍歷sequence的方法

    python range()函數(shù)取反序遍歷sequence的方法

    今天小編就為大家分享一篇python range()函數(shù)取反序遍歷sequence的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 昨晚我用python幫隔壁小姐姐P證件照然后發(fā)現(xiàn)

    昨晚我用python幫隔壁小姐姐P證件照然后發(fā)現(xiàn)

    大家好,我是Lex 喜歡欺負超人那個Lex 建議大家收藏哦,以后幫小姐姐P自拍,證件照,調(diào)尺寸,背景,摳圖,直接10行代碼搞定,瞬間高大上
    2021-08-08
  • python使用pdfminer解析pdf文件的方法示例

    python使用pdfminer解析pdf文件的方法示例

    這篇文章主要介紹了python使用pdfminer解析pdf文件的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 帶你認識Django

    帶你認識Django

    今天小編就為大家分享一篇關于帶你認識Django,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python繪制七段數(shù)碼管實例代碼

    Python繪制七段數(shù)碼管實例代碼

    這篇文章主要介紹了Python繪制七段數(shù)碼管實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 解決windows下python3使用multiprocessing.Pool出現(xiàn)的問題

    解決windows下python3使用multiprocessing.Pool出現(xiàn)的問題

    這篇文章主要介紹了解決windows下python3使用multiprocessing.Pool出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論

凭祥市| 大宁县| 弥勒县| 永登县| 基隆市| 宝兴县| 密山市| 河东区| 临桂县| 浦江县| 襄城县| 皮山县| 竹溪县| 达日县| 福鼎市| 长汀县| 元谋县| 建德市| 建水县| 土默特右旗| 延庆县| 灌云县| 攀枝花市| 松阳县| 文昌市| 泽普县| 黑山县| 灵璧县| 永城市| 安康市| 阳曲县| 繁昌县| 本溪市| 漳平市| 从江县| 彝良县| 册亨县| 白玉县| 镇远县| 海南省| 汤阴县|