# 22.7. `imghdr` - 确定图像的类型

源代码： Lib/imghdr.py

`imghdr`模块确定包含在文件或字节流中的图像类型。

`imghdr`模块定义以下函数：

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

  测试由filename命名的文件中包含的图像数据，并返回描述图像类型的字符串。如果提供了可选的h，则忽略文件名，假设h包含要测试的字节流。

可以识别以下图像类型，如下所示，返回值来自`what()`：

值 | 图像格式
--- | ---
`'rgb'` | SGI ImgLib文件
`'gif'` | GIF 87a和89a文件
`'pbm'` | 便携式位图文件
`'pgm'` | 便携式灰色图文件
`'ppm'` | 便携式Pixmap文件
`'tiff'` | TIFF文件
`'rast'` | 太阳光栅文件
`'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'