liushuibufuqin 2016-12-01
今天遇到一个小问题,如何探测图片的文件类型。总结如下:
magic
模块的github地址在这, 可以用来方便地探测文件类型,使用示例如下,可以方便地探测一个文件或是字节流文件。
>>> import magic >>> magic.from_file("testdata/test.pdf") 'PDF document, version 1.2' >>> magic.from_buffer(open("testdata/test.pdf").read(1024)) 'PDF document, version 1.2' >>> magic.from_file("testdata/test.pdf", mime=True) 'application/pdf'
python提供的标准库 imghdr
可以用来确定图片的类型,参见这里。
API如下:
imghdr.what(filename[, h]) # 接受文件名作为参数。如果提供了字节流作为第二个参数,那么第一个文件名参数会被忽略,从而探测字节流的图片类型
简单的例子如下:
>>> import imghdr >>> imghdr.what('bass.gif') 'gif'
可能的返回类型如下:
使用PIL也可以检测图片类型,例子如下:
from PIL import Image img = Image.open(filename) print(img.format) # 'JPEG'
而且可以用 PIL
方便地转化图片格式,它会自动检测后缀以合适的格式保存:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。 -L 直接显示符号连接所指向的文件的类别。 -m<魔法数字文件> 指定魔法数字文件。 -v 显示版本信息。 -z 尝试去解读压缩文件的内容。