Библиотека Pillow: обработка изображений в Python
Библиотека Pillow в Python — незаменимый помощник при работе с изображениями. Создана она Джеффри А. Кларком в 2013 году как форк широко известной библиотеки Python Imaging Library (PIL). С помощью Pillow можно загружать, изменять и сохранять обработанные фотографии в файл разных форматов. Это свойство делает библиотеку востребованным инструментом для веб-разработки программ, требующих изменение изображений.
Где нужна Pillow?
Библиотека Pillow необходима в следующих ситуациях:
- Редактирование изображений: масштабирование, обрезка, изменение формата и разрешения.
- Генерирование миниатюр: создание уменьшенных копий изображений для веб-страниц или программ.
- Нанесение текста на изображение (например, водяных знаков или подписей).
- Добавление фильтров на изображение: коррекция яркости, контраста и другие эффекты.
- Извлечение метаданных: Чтение и запись метаданных из фото, таких как EXIF.
- Склеивание нескольких фотографий в одно новое изображение.
Как установить Pillow
Установка Pillow для работы с фотографиями происходит с помощью пакетного менеджера pip. Введите простую команду:
pip install Pillow
После завершения установки библиотеку можно импортировать следующим образом:
from pil import image image
Библиотека Pillow: варианты использования в Python
1. Открытие и просмотр изображений
С помощью Python Pillow вы можете открыть и просмотреть изображение. В этом вам поможет класс Image:
from PIL import Image # Открываем фото image = Image.open("photo.jpg") # Просматриваем фото image.show()
Эти две команды открывают одно изображение photo.jpg и показывают его в стандартном средстве просмотра вашей операционной системы.
2. Редактирование размера
Чтобы изменить размер изображения, следует использовать метод resize():
# Выполняем изменение размера исходного изображения new_image = image.resize((800, 600)) # Сохраняем результат new_image.save("resized_photo.jpg")
В результате ширина и высота фотографии уменьшатся до 800×600 пикселей, а само изображение получит новое название resized_photo.jpg.
3. Обрезка изображения
Для обрезки фотографий используется метод crop(), который принимает координаты области обрезки:
# Обрезаем фотографию по левой верхней и правой нижней границе cropped_image = image.crop((100, 100, 400, 400)) # Сохраняем результат cropped_image.save("cropped_photo.jpg")
Этот пример обрежет область изображения от (100, 100) до (400, 400) и сохранит полученный результат.
4. Поворот и зеркальное отражение
Также вы можете поворачивать фотографию с помощью метода rotate(), зеркально отразить — с помощью transpose():
# Нужно повернуть на 30 градусов rotated_image = image.rotate(30) # Зеркальное отражение по горизонтали flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT) # Сохраняем результат rotated_image.save("rotated_photo.jpg") flipped_image.save("flipped_photo.jpg")
5. Другие фильтры для обработки изображений
Библиотека Pillow имеет разные возможности фильтрации изображений: добавлять фильтры для фото, создавать размытое изображение, увеличить резкость или выполнить другие команды. В этом вам поможет модуль Image Filter:
from PIL import ImageFilter # Эффект размытия blurred_image = image.filter(ImageFilter.BLUR) # Увеличение резкости sharpened_image = image.filter(ImageFilter.SHARPEN) # Сохраняем результаты blurred_image.save("blurred_photo.jpg") sharpened_image.save("sharpened_photo.jpg")
6. Нанесение текста на фото
Чтобы нанести текст на цветное или черно-белое изображение, используйте класс ImageDraw в библиотеке Pillow. Если хотите при этом изменить шрифт надписи, то воспользуйтесь модулем ImageFont:
from PIL import ImageDraw, ImageFont # Создание объекта для рисования draw = ImageDraw.Draw(image) # Загрузка шрифта font = ImageFont.truetype("tahoma.ttf", 28) # Нанесение текста draw.text((100, 100), "Hello, Pillow!", font=font, fill="red") # Сохранение результата image.save("text_photo.jpg")
Этот код нанесет текст “Hello, Pillow!” красного цвета на наше изображение.
7. Генерирование миниатюр
Для создания изображений уменьшенного размера (миниатюры) и последующего использования ее в своем веб-приложениях выполните действия:
# Создаем миниатюру (пропорционально указанным размерам) image.thumbnail((250, 250)) # Сохраняем результат image.save("thumbnail_photo.jpg")
8. Извлечение метаданных EXIF
Библиотека Pillow позволяет извлекать и менять метаданные EXIF из фотографий. Вот код, чтобы прочитать метаданные:
# Чтение метаданных EXIF exif_data = image._getexif() # Вывод метаданных на экран if exif_data: for tag, value in exif_data.items(): print(f"{tag}: {value}")
Продвинутые методы обработки изображений
1. Объединение изображений
Библиотека Pillow поддерживает объединение двух изображений в одно. Это возможно благодаря методу Image.blend(). Единственное условие: оба изображения должны быть одинакового размера:
# Открыть второе изображение image2 = Image.open("photo2.jpg").resize(image.size) # Объединить изображения со значением альфа 0,5 blended_image = Image.blend(image, image2, alpha=0.5) # Сохранить смешанное изображение blended_image.save("blended_photo.jpg")
2. Маскирование и альфа-композитинг
Альфа-композитинг позволяет выполнять более сложные манипуляции с фотографиями, используя маску для управления тем, какие части изображения будут затронуты:
# Создать альфа-маску mask = Image.new("L", image.size, 128) # Режим L для маски в оттенках серого с непрозрачностью 50% # Скомпоновать изображения с помощью маски composited_image = Image.composite(image, image2, mask) # Сохранить составное изображение composited_image.save("composited_photo.jpg")
3. Работа с различными цветовыми режимами
Pillow может преобразовывать изображения между различными цветовыми режимами, такими как RGB, оттенки серого и CMYK:
# Преобразовать изображение в оттенки серого grayscale_image = image.convert("L") # Преобразовать изображение в CMYK cmyk_image = image.convert("CMYK") # Сохранить преобразованные изображения grayscale_image.save("grayscale_photo.jpg") cmyk_image.save("cmyk_photo.jpg")
Дальше просто запустите приведенный выше код. Как видите, вы можете использовать Pillow для разных задач.
Заключение
Как вы уже убедились, популярная библиотека Pillow — великолепное и удобное средство для работы с фотографиями и любыми другими типами изображений в Python. Она включает множество полезных функций, позволяющих обрабатывать фото по заданным параметрам. Вы можете задать для новой картинки новую ширину и высоту, объединить в одно изображение две фотографии, выполнить многие другие преобразования изображений.
С библиотекой Pillow особенно удобно работать при создании веб-приложений, потому что с ее помощью многие графические задачи можно автоматизировать. В итоге обработка изображений с помощью библиотеки сокращает рабочее время, затраченное разработчиком на выполнение этих задач.
Библиотека Python Pillow — отличный выбор для разработчиков любого профессионального уровня, которые хотят научиться методом проб и ошибок эффективнее работать с изображениями.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: