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

---

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

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

---

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

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

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

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

Распознаются следующие типы изображений, перечисленные ниже с возвращаемым значением из [`what()`](https://python-all.ru/3.4/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'` | Портативная сетевая графика |

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

#### `imghdr.tests`

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

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

Пример:

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