Библиотека Python Pillow¶
Pillow — свободная кросс-платформенная библиотека для языка программирования Python, предназначенная для работы с растровой графикой. Она является форком (ответвлением) более старой библиотеки Python Imaging Library (PIL), которая перестала поддерживаться после 2011 года. Pillow предоставляет разработчикам инструменты для открытия, создания, изменения и сохранения изображений в десятках различных форматов, включая PNG, JPEG, GIF, BMP и TIFF.
¶История
Проект PIL был основан Фредриком Лундом в середине 1990-х годов и долгое время оставался стандартным инструментом для обработки изображений в Python. Однако последняя версия PIL (1.1.7) вышла в 2009 году и не поддерживала Python 3. В 2010 году Алекс Кларк и другие разработчики создали форк проекта под названием Pillow, целью которого была совместимость с актуальными версиями интерпретатора и продолжение разработки.
Первый релиз Pillow состоялся в 2010 году. В отличие от оригинальной библиотеки, которая распространялась под собственной лицензией PIL, Pillow использует открытую лицензию HPND (Historical Permission Notice and Disclaimer), что делает её полностью свободной для коммерческого использования. Начиная с версии 2.0 (2013 год), проект полностью отказался от обратной совместимости с API оригинальной PIL и сосредоточился на собственном развитии. Сегодня Pillow является официальной и наиболее распространённой библиотекой обработки изображений в экосистеме Python.
¶Основные возможности
¶Форматы файлов
Библиотека поддерживает более тридцати различных графических форматов. Полная поддержка включает чтение и запись для наиболее популярных форматов: PNG (включая прозрачность и 16-битные каналы), JPEG, GIF (включая анимацию), BMP, TIFF, WebP и ICO. Ограниченная поддержка (только чтение или только запись) реализована для форматов PSD, PDF, EPS, PCX и ряда других.
¶Обработка изображений
Pillow предоставляет широкий набор функций для манипуляции изображениями:
- Геометрические преобразования: изменение размера (resize), поворот (rotate), отражение (transpose), обрезка (crop).
- Цветовые операции: преобразование цветовых пространств (RGB, CMYK, HSV, LAB), коррекция яркости, контраста и насыщенности.
- Фильтры: размытие (GaussianBlur), повышение резкости (UnsharpMask), контуризация (CONTOUR), сглаживание (SMOOTH) и другие.
- Рисование: модуль
ImageDrawпозволяет создавать простые фигуры (линии, прямоугольники, эллипсы, многоугольники) и наносить текст с использованием TrueType-шрифтов.
¶Работа с пикселями
Библиотека позволяет получать прямой доступ к пикселям изображения через методы getpixel() и putpixel(), а также через более эффективный объект PixelAccess. Это даёт возможность реализовывать произвольные алгоритмы обработки, не предусмотренные встроенными функциями.
¶Архитектура и ключевые модули
Основным классом библиотеки является Image, который представляет растровое изображение. Объект этого класса создаётся при загрузке файла (метод Image.open()) или при создании нового изображения (метод Image.new()). Ключевые свойства объекта Image включают размер (size), режим (mode) и палитру.
Важные подмодули:
ImageFilter— содержит реализации стандартных фильтров.ImageEnhance— позволяет настраивать яркость, контраст, цветность и резкость.ImageDraw— обеспечивает двумерную векторную графику поверх изображения.ImageFont— управляет загрузкой шрифтов для текстовых надписей.ImageSequence— используется для работы с многокадровыми изображениями (например, анимированными GIF).ImageOps— предоставляет дополнительные операции, такие как автоконтраст и эквализация гистограммы.
¶Установка и использование
Установка библиотеки осуществляется через пакетный менеджер pip: pip install Pillow. Проект поддерживает все основные операционные системы (Windows, macOS, Linux) и все актуальные версии Python (3.8 и новее). Для работы с определёнными форматами (например, WebP) могут потребоваться дополнительные системные библиотеки, однако для стандартных форматов достаточно базовой установки.
Типичный пример использования выглядит следующим образом:
```python from PIL import Image, ImageFilter
¶Открытие изображения
img = Image.open('input.jpg')
¶Применение фильтра размытия
blurred = img.filter(ImageFilter.GaussianBlur(radius=5))
¶Поворот изображения
rotated = blurred.rotate(45, expand=True)
¶Сохранение результата
rotated.save('output.png') ```
¶Применение
Pillow широко используется в самых разных областях разработки на Python:
- Веб-разработка: обработка загружаемых пользователем аватарок, создание миниатюр (thumbnail) для галерей, оптимизация изображений для веба. Библиотека интегрирована с популярными фреймворками, такими как Django и Flask.
- Автоматизация и скрипты: пакетная обработка больших массивов изображений, конвертация форматов, добавление водяных знаков.
- Научные исследования: предварительная подготовка изображений перед анализом, визуализация данных, работа с медицинскими снимками (через дополнительные модули).
- Компьютерное зрение: хотя для сложных задач чаще используются специализированные библиотеки (OpenCV, PyTorch), Pillow применяется для базовой загрузки и предобработки данных.
- Создание графических интерфейсов: библиотека используется для генерации иконок, спрайтов и фоновых изображений в приложениях на Tkinter и PyQt.
¶Преимущества и ограничения
К достоинствам Pillow относятся простота использования, хорошо документированный API, активная поддержка сообщества и регулярный выпуск обновлений. Библиотека полностью написана на Python с использованием C-расширений для критических операций, что обеспечивает приемлемую производительность.
Основным ограничением является то, что Pillow не предназначена для высокопроизводительной обработки изображений в реальном времени или для сложных задач компьютерного зрения. Для этих целей существуют более специализированные инструменты, такие как OpenCV (компьютерное зрение) или scikit-image (научная обработка изображений). Кроме того, библиотека не поддерживает векторную графику и имеет ограниченные возможности для работы с видео.
¶Сравнение с альтернативами
На рынке Python-библиотек для работы с изображениями Pillow занимает нишу универсального инструмента начального и среднего уровня. В отличие от OpenCV, она проще в освоении и не требует глубоких знаний в области компьютерного зрения. По сравнению с scikit-image, Pillow предоставляет более низкоуровневый доступ к данным и лучше подходит для задач, связанных с чтением/записью файлов и простыми преобразованиями. Для задач глубокого обучения, связанных с обработкой изображений, Pillow часто используется совместно с фреймворками PyTorch и TensorFlow как средство загрузки и аугментации данных.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

