Документация Python неофициальный перевод

21.2. imageop – Работа с необработанными данными изображенийimageop – Manipulate raw image data

Устарело с версии 2.6: Модуль imageop удалён в Python 3.

Модуль imageop содержит несколько полезных операций над изображениями. Он работает с изображениями, состоящими из пикселей глубиной 8 или 32 бита, хранящихся в строках Python. Это тот же формат, что используется модулями gl.lrectwrite() и 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().

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(), алгоритм дизеринга в настоящее время очень прост.

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 системах.