歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python 探測圖片文件類型

Python 探測圖片文件類型

日期:2017/3/1 9:08:54   编辑:Linux編程

Table of Contents

  • 1. 探測圖片類型
    • 1.1. python magic
    • 1.2. imghdr
    • 1.3. PIL.Image

探測圖片類型

今天遇到一個小問題,如何探測圖片的文件類型。總結如下:

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")

Copyright © Linux教程網 All Rights Reserved