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'>>>
自定义检测流程
新闻热点
疑难解答