中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python中使用imghdr模塊識別圖片的格式

發布時間:2021-03-17 16:19:57 來源:億速云 閱讀:456 作者:Leah 欄目:開發技術

本篇文章為大家展示了如何在Python中使用imghdr模塊識別圖片的格式,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

imghdr模塊

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

唯一一個API

imghdr.what(file, h=None)

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

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

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

返回值描述檢測方式
jpeg用JFIF或者Exif格式保存的JPEG圖片第7到第10個字節是b'JFIF'或者b'Exif'
png可移植網絡圖形格式(Portable Network Graphic Format)以字節串b'\x89PNG\r\n\x1a\n'開頭
gifGIF(Graphics Interchange Format)的87版本和89版本前6個字節為b'GIF87a'或者b'GIF89a'
tiffTIFF(Tag Image File Format)的兩種字節順序前兩個字節為b'MM'或者b'II'
rgbSGI ImgLib以字節串b'\x01\xda'開頭
pbmPortable Bitmap第1個字節為b'P',第2個字節為b'1'或b'4',第3個字節為b'\t'或b'\n'或b'\r'
pgmPortable Graymap Files第1個字節為b'P',第2個字節為b'2'或b'5',第3個字節為b'\t'或b'\n'或b'\r'
ppmPortable Pixmap Files第1個字節為b'P',第2個字節為b'3'或b'6',第3個字節為b'\t'或b'\n'或b'\r'
rastSun Raster以字節串b'\x59\xA6\x6A\x95'開頭
xbmX Bitmap Files以字節串b'#define ‘開頭
bmpBitmap,Windows標準圖像文件格式以字節串b'BM'開頭
webp谷歌的WebP格式,Python3.5加入以字節串b'RIFF'開頭并且第9到第12個字節為b'WEBP'
exrOpenEXR,Python3.5加入以字節串b'\x76\x2f\x31\x01'開頭

模塊內部缺陷

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

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

自定義檢測流程

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

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

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

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

命令行啟動imghdr模塊

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

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

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

上述內容就是如何在Python中使用imghdr模塊識別圖片的格式,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴塘县| 麻城市| 镇平县| 商城县| 博乐市| 南郑县| 清新县| 常州市| 军事| 安陆市| 无锡市| 永靖县| 涟源市| 锡林浩特市| 民丰县| 萝北县| 贵州省| 泽库县| 富裕县| 鹤峰县| 台南市| 呼和浩特市| 云梦县| 鄯善县| 长白| 称多县| 改则县| 科尔| 元阳县| 叶城县| 绥德县| 夏津县| 建阳市| 华亭县| 佛冈县| 昌图县| 鹤庆县| 盘锦市| 城口县| 朝阳区| 陇川县|