Рубріки: Основы

Библиотека 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 — отличный выбор для разработчиков любого профессионального уровня, которые хотят научиться методом проб и ошибок эффективнее работать с изображениями.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024