今天遇到一个小问题,如何探测图片的文件...">
美文网首页
Python 探测图片文件类型

Python 探测图片文件类型

作者: Nisen | 来源:发表于2016-11-23 23:03 被阅读253次

    探测图片类型<a id="sec-1" name="sec-1"></a>

    今天遇到一个小问题,如何探测图片的文件类型。总结如下:

    python magic<a id="sec-1-1" name="sec-1-1"></a>

    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<a id="sec-1-2" name="sec-1-2"></a>

    python提供的标准库 imghdr 可以用来确定图片的类型,参见这里
    API如下:

    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<a id="sec-1-3" name="sec-1-3"></a>

    使用PIL也可以检测图片类型,例子如下:

    from PIL import Image
    
    img = Image.open(filename)
    print(img.format)  # 'JPEG'
    

    而且可以用 PIL 方便地转化图片格式,它会自动检测后缀以合适的格式保存:

    import Image
    im = Image.open('test.jpg')
    im.save('test.tiff')  # or 'test.tif'
    
    # 或者手动指定格式
    import Image
    im = Image.open("file.png")
    im.save("file.jpg", "JPEG")
    

    相关文章

      网友评论

          本文标题:Python 探测图片文件类型

          本文链接:https://www.haomeiwen.com/subject/shtbpttx.html