Pillow: модуль ImageOps
ImageOps — это служебный модуль в библиотеке обработки изображений Python Pillow, который предоставляет ряд предопределенных операций обработки изображений. Эти операции часто являются обертками и упрощениями функциональности модуля PIL.Image, позволяя разработчикам реализовывать типовые задачи обработки изображений с помощью более лаконичного кода.
Основные возможности модуля ImageOps
- Упрощённые операции: инкапсулирует сложные рабочие процессы обработки изображений в один вызов функции
- Стандартизированная обработка: предоставляет стандартизированные методы обработки изображений
- Практические функции: включает разнообразные практические функции обработки изображений
- Дополнение к PIL.Image: дополняет функциональность модуля PIL.Image
Общие методы модуля ImageOps
Ниже приведены наиболее часто используемые методы модуля ImageOps и описания их функций:
Методы корректировки изображения
| Название метода | Parameters | Возвращаемое значение | Описание |
|---|---|---|---|
autocontrast(image, cutoff=0, ignore=None) |
image: входное изображение cutoff: процент обрезки (0-100) ignore: цвет фона, который следует игнорировать |
Новый объект изображения | Автоматически настраивайте контраст изображения так, чтобы самые темные пиксели изображения становились черными, а самые светлые пиксели становились белыми. |
colorize(image, black, white) |
image: изображение в оттенках серого black: цвет замены для черного white: цвет замены для белого |
Новый объект изображения | Раскрасьте изображение в оттенках серого, указав, в какие цвета должны отображаться черный и белый соответственно. |
equalize(image, mask=None) |
image: входное изображение mask: необязательная маска |
Новый объект изображения | Выполните эквализацию гистограммы изображения для повышения контраста. |
mirror(image) |
image: входное изображение | Новый объект изображения | Отразите изображение по горизонтали (эффект зеркала) |
Методы преобразования изображений
| Название метода | Parameters | Возвращаемое значение | Описание |
|---|---|---|---|
expand(image, border, fill=0) |
image: входное изображение border: ширина границы fill: цвет заливки |
Новый объект изображения | Добавьте границу к изображению |
fit(image, size, method=0, bleed=0.0, centering=(0.5, 0.5)) |
image: входное изображение size: целевой размер method: метод изменения размера bleed: доля обрезки centering: центральная точка |
Новый объект изображения | Изменить размер изображения до указанного размера, сохраняя соотношение сторон. |
flip(image) |
image: входное изображение | Новый объект изображения | Отразить изображение по вертикали |
scale(image, factor, resample=3) |
image: входное изображение factor: коэффициент масштабирования resample: метод пересэмплирования |
Новый объект изображения | Масштабировать изображение пропорционально |
Методы эффектов изображения
| Название метода | Parameters | Возвращаемое значение | Описание |
|---|---|---|---|
posterize(image, bits) |
image: входное изображение bits: количество битов для сохранения (1-8) |
Новый объект изображения | Уменьшить количество битов на цветовой канал в изображении, чтобы создать эффект постеризации. |
solarize(image, threshold=128) |
image: входное изображение threshold: порог (0-255) |
Новый объект изображения | Инвертировать все значения пикселей выше порога, чтобы создать эффект соляризации. |
invert(image) |
image: входное изображение | Новый объект изображения | Инвертировать цвета изображения (эффект негатива) |
Примеры использования
Пример базового использования
Пример
# Открыть файл изображения
image = Image.open("example.jpg")
# Автоматическая настройка контраста
adjusted_image = ImageOps.autocontrast(image)
# Сохраните обработанное изображение
adjusted_image.save("adjusted_example.jpg")
Дополнительные практические примеры
Пример
# Создать негатив изображения
image = Image.open("photo.jpg")
inverted_image = ImageOps.invert(image)
inverted_image.save("inverted_photo.jpg")
# Добавить рамку к изображению
bordered_image = ImageOps.expand(image, border=50, fill="white")
bordered_image.save("bordered_photo.jpg")
# Колоризация изображения (сначала преобразуйте изображение в оттенки серого)
gray_image = ImageOps.grayscale(image)
colored_image = ImageOps.colorize(gray_image, black="blue", white="yellow")
colored_image.save("colored_photo.jpg")
Примечания
- Режим изображения: Некоторые методы ImageOps имеют особые требования к режиму изображения, например
colorize()требуется изображение в оттенках серого - Аспекты производительности: При обработке больших изображений некоторые операции могут потреблять много памяти
- Диапазоны параметров: Обратите внимание на допустимые диапазоны параметров, например
posterize()параметр bits должен быть от 1 до 8 - Защита оригинала: методы ImageOps обычно возвращают новый объект изображения, а исходное изображение не изменяется
Итог
Модуль ImageOps — это очень практичный набор инструментов в библиотеке Pillow, упрощающий многие распространённые задачи обработки изображений. Освоив эти методы, разработчики могут быстро реализовать различные эффекты обработки изображений без написания сложного кода. Для сценариев, требующих более продвинутой обработки изображений, можно комбинировать другие возможности модуля PIL.Image.
Другие расширения