探测图片类型
今天遇到一个小问题,如何探测图片的文件类型。总结如下:
python magic
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'
imghdr
python提供的标准库 imghdr
可以用来确定图片的类型,参见。
imghdr.what(filename[, h])# 接受文件名作为参数。如果提供了字节流作为第二个参数,那么第一个文件名参数会被忽略,从而探测字节流的图片类型
简单的例子如下:
>>> import imghdr>>> imghdr.what('bass.gif')'gif'
可能的返回类型如下:
'rgb': SGI ImgLib Files
'gif': GIF 87a and 89a Files
'pbm': Portable Bitmap Files
'pgm': Portable Graymap Files
'ppm': Portable Pixmap Files
'tiff': TIFF Files
'rast': Sun Raster Files
'xbm': X Bitmap Files
'jpeg': JPEG data in JFIF or Exif formats
'bmp': BMP files
'png': Portable Network Graphics
PIL.Image
使用PIL也可以检测图片类型,例子如下:
from PIL import Imageimg = Image.open(filename)print(img.format) # 'JPEG'
而且可以用 PIL
方便地转化图片格式,它会自动检测后缀以合适的格式保存:
import Imageim = Image.open('test.jpg')im.save('test.tiff') # or 'test.tif'# 或者手动指定格式import Imageim = Image.open("file.png")im.save("file.jpg", "JPEG")