# 22.7. `imghdr` — 推测图像类型

源代码 Lib/imghdr.py

`imghdr` 模块推测文件或字节流中的图像的类型。

`imghdr` 模块定义了以下类型：

`imghdr.``what`(filename, h=None)

  测试包含在命名为 filename 的文件中的图像数据，并且返回描述此类图片的字符串。如果可选的 h 被提供， filename 将被忽略并且 h 包含将被测试的二进制流。

  3.6 版更變: 接受一个 path-like object。

接下来的图像类型是可识别的，返回值来自 `what()`：

值 | 图像格式
--- | ---
`'rgb'` | SGI 图像库文件
`'gif'` | GIF 87a 和 89a 文件
`'pbm'` | 便携式位图文件
`'pgm'` | 便携式灰度图文件
`'ppm'` | 便携式像素表文件
`'tiff'` | TIFF 文件
`'rast'` | Sun 光栅文件
`'xbm'` | X 位图文件
`'jpeg'` | JFIF 或 Exif 格式的 JPEG 数据
`'bmp'` | BMP 文件
`'png'` | 便携式网络图像
`'webp'` | WebP 文件
`'exr'` | OpenEXR 文件

3.5 版新加入: exr 和 webp 格式被添加。

你可以扩展此 `imghdr` 可以被追加的这个变量识别的文件格式的列表：

`imghdr.``tests`

  执行单个测试的函数列表。每个函数都有两个参数：字节流和类似开放文件的对象。当 `what()` 用字节流调用时，类文件对象将是 `None`。

  如果测试成功，这个测试函数应当返回一个描述图像类型的字符串，否则返回 `None`。

示例:

    >>> import imghdr
    >>> imghdr.what('bass.gif')
    'gif'