> **Источник:** https://python-all.ru/2.7/library/imghdr.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 21.8. [`imghdr`](https://python-all.ru/2.7/library/imghdr.html#module-imghdr) – Определение типа изображения

**Исходный код:** [Lib/imghdr.py](https://python-all.ru/src/2.7/Lib/imghdr.py)

---

Модуль [`imghdr`](https://python-all.ru/2.7/library/imghdr.html#module-imghdr) определяет тип изображения, содержащегося в файле или потоке байтов.

Модуль [`imghdr`](https://python-all.ru/2.7/library/imghdr.html#module-imghdr) определяет следующую функцию:

#### `imghdr.what(filename[, h])`

Проверяет данные изображения, содержащиеся в файле с именем *filename*, и возвращает строку, описывающую тип изображения. Если указан необязательный *h*, то *filename* игнорируется и считается, что *h* содержит поток байтов для проверки.

Распознаются следующие типы изображений, перечисленные ниже вместе с возвращаемым значением от [`what()`](https://python-all.ru/2.7/library/imghdr.html#imghdr.what):

| Значение | Формат изображения |
| --- | --- |
| `'rgb'` | Файлы SGI ImgLib |
| `'gif'` | Файлы GIF 87a и 89a |
| `'pbm'` | Файлы Portable Bitmap |
| `'pgm'` | Файлы Portable Graymap |
| `'ppm'` | Файлы Portable Pixmap |
| `'tiff'` | Файлы TIFF |
| `'rast'` | Файлы Sun Raster |
| `'xbm'` | Файлы X Bitmap |
| `'jpeg'` | Данные JPEG в форматах JFIF или Exif |
| `'bmp'` | Файлы BMP |
| `'png'` | Портативная сетевая графика |

Новое в версии 2.5: Обнаружение Exif.

Список типов файлов, распознаваемых [`imghdr`](https://python-all.ru/2.7/library/imghdr.html#module-imghdr), можно расширить, добавив в эту переменную:

#### `imghdr.tests`

Список функций, выполняющих отдельные тесты. Каждая функция принимает два аргумента: поток байтов и открытый файлоподобный объект. Когда [`what()`](https://python-all.ru/2.7/library/imghdr.html#imghdr.what) вызывается с потоком байтов, файлоподобный объект будет `None`.

Тестовая функция должна возвращать строку с описанием типа изображения, если тест успешен, или `None`, если нет.

Пример:

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