首页 > 编程 > Python > 正文

Python用imghdr模块识别图片格式实例解析

2020-02-16 11:35:52
字体:
来源:转载
供稿:网友

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'开头
gif GIF(Graphics Interchange Format)的87版本和89版本 前6个字节为b'GIF87a'或者b'GIF89a'
tiff TIFF(Tag Image File Format)的两种字节顺序 前两个字节为b'MM'或者b'II'
rgb SGI ImgLib 以字节串b'/x01/xda'开头
pbm Portable Bitmap 第1个字节为b'P',第2个字节为b'1'或b'4',第3个字节为b'/t'或b'/n'或b'/r'
pgm Portable Graymap Files 第1个字节为b'P',第2个字节为b'2'或b'5',第3个字节为b'/t'或b'/n'或b'/r'
ppm Portable Pixmap Files 第1个字节为b'P',第2个字节为b'3'或b'6',第3个字节为b'/t'或b'/n'或b'/r'
rast Sun Raster 以字节串b'/x59/xA6/x6A/x95'开头
xbm X Bitmap Files 以字节串b'#define ‘开头
bmp Bitmap,Windows标准图像文件格式 以字节串b'BM'开头
webp 谷歌的WebP格式,Python3.5加入 以字节串b'RIFF'开头并且第9到第12个字节为b'WEBP'
exr OpenEXR,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'>>>

自定义检测流程

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表