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

---

# 21.2. [`imageop`](https://python-all.ru/2.7/library/imageop.html#module-imageop) – Работа с необработанными данными изображений

Устарело с версии 2.6: Модуль [`imageop`](https://python-all.ru/2.7/library/imageop.html#module-imageop) удалён в Python 3.

Модуль [`imageop`](https://python-all.ru/2.7/library/imageop.html#module-imageop) содержит несколько полезных операций над изображениями. Он работает с изображениями, состоящими из пикселей глубиной 8 или 32 бита, хранящихся в строках Python. Это тот же формат, что используется модулями `gl.lrectwrite()` и [`imgfile`](https://python-all.ru/2.7/library/imgfile.html#module-imgfile).

Модуль определяет следующие переменные и функции:

#### `exception imageop.error`

Это исключение вызывается при любых ошибках, например, при неизвестном количестве бит на пиксель и т.п.

#### `imageop.crop(image, psize, width, height, x0, y0, x1, y1)`

Возвращает выделенную часть *изображения*, которое должно быть размером *width* на *height* и состоять из пикселей размером *psize* байт. *x0*, *y0*, *x1* и *y1* аналогичны параметрам `gl.lrectread()`, то есть граница включается в новое изображение. Новые границы не обязательно должны находиться внутри изображения. Пиксели, оказавшиеся за пределами старого изображения, получают нулевое значение. Если *x0* больше *x1*, новое изображение зеркально отражается. То же самое верно для координат y.

#### `imageop.scale(image, psize, width, height, newwidth, newheight)`

Возвращает *изображение*, масштабированное до размера *newwidth* на *newheight*. Интерполяция не выполняется, масштабирование осуществляется простым дублированием или удалением пикселей. Поэтому изображения, созданные компьютером, или изображения с дизерингом будут выглядеть некачественно после масштабирования.

#### `imageop.tovideo(image, psize, width, height)`

Применяет вертикальный фильтр нижних частот к изображению. Каждый результирующий пиксель вычисляется как среднее двух вертикально расположенных исходных пикселей. Основное назначение этой функции – предотвращение чрезмерного мерцания при отображении изображения на видеосистеме с чересстрочной разверткой, отсюда и название.

#### `imageop.grey2mono(image, width, height, threshold)`

Преобразует 8-битное полутоновое изображение в 1-битное, применяя пороговую обработку ко всем пикселям. Результирующее изображение плотно упаковано и, вероятно, полезно только в качестве аргумента для [`mono2grey()`](https://python-all.ru/2.7/library/imageop.html#imageop.mono2grey).

#### `imageop.dither2mono(image, width, height)`

Преобразует 8-битное полутоновое изображение в 1-битное монохромное, используя (простейший) алгоритм дизеринга.

#### `imageop.mono2grey(image, width, height, p0, p1)`

Преобразует 1-битное монохромное изображение в 8-битное полутоновое или цветное. Все пиксели с нулевым значением на входе получают значение *p0* на выходе, а все пиксели с единичным значением получают значение *p1* на выходе. Для преобразования монохромного черно-белого изображения в полутоновое передайте соответственно значения `0` и `255`.

#### `imageop.grey2grey4(image, width, height)`

Преобразует 8-битное полутоновое изображение в 4-битное полутоновое без дизеринга.

#### `imageop.grey2grey2(image, width, height)`

Преобразует 8-битное полутоновое изображение в 2-битное полутоновое без дизеринга.

#### `imageop.dither2grey2(image, width, height)`

Преобразует 8-битное полутоновое изображение в 2-битное полутоновое с дизерингом. Как и в [`dither2mono()`](https://python-all.ru/2.7/library/imageop.html#imageop.dither2mono), алгоритм дизеринга в настоящее время очень прост.

#### `imageop.grey42grey(image, width, height)`

Преобразует 4-битное полутоновое изображение в 8-битное полутоновое.

#### `imageop.grey22grey(image, width, height)`

Преобразует 2-битное полутоновое изображение в 8-битное полутоновое.

#### `imageop.backward_compatible`

Если установлено в 0, функции в этом модуле используют не обратно совместимый способ представления многобайтовых пикселей на системах с прямым порядком байтов (little-endian). SGI, для которой изначально был написан этот модуль, является системой с обратным порядком байтов (big-endian), поэтому установка этой переменной не будет иметь эффекта. Однако код изначально не был предназначен для работы на других системах, поэтому в нём были сделаны предположения о порядке байтов, которые не являются универсальными. Установка этой переменной в 0 приведет к обращению порядка байтов на little-endian системах, так что он станет таким же, как на big-endian системах.
