zoukankan      html  css  js  c++  java
  • Python 探测图片文件类型

    探测图片类型

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

    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 可以用来确定图片的类型,参见这里
    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

    使用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")
  • 相关阅读:
    MSP430的CAN通信发送
    Arduino 101/Genuino101使用-第2篇
    CC2541调试问题记录-第一篇
    STM32运行FreeRTOS出现prvTaskExitError错误死机
    Arduino 101/Genuino101使用-第一篇
    LAUNCHXL-28379D入门学习-第一篇
    蒸汽机的原理
    等高线相似性匹配
    cad转shapefile文件
    ArcGIS坐标转换
  • 原文地址:https://www.cnblogs.com/nisen/p/6095956.html
Copyright © 2011-2022 走看看