Python Imaging Library (PIL) — одна из самых популярных библиотек для работы с изображениями в Python. Несмотря на то, что она была заменена более современной библиотекой Pillow, многие по привычке называют её PIL. Pillow — это форк PIL с активной поддержкой и улучшениями.
В этой статье мы рассмотрим основные возможности Pillow, а также поделимся несколькими интересными лайфхаками для работы с изображениями.
Основные возможности Pillow
Pillow предоставляет обширный функционал для работы с изображениями, включая:
- Открытие и сохранение изображений: поддерживаются популярные форматы, такие как JPEG, PNG, BMP, GIF и другие.
- Изменение размера и обрезка: простое масштабирование и обрезка изображений.
- Обработка цветов: конвертация между цветовыми пространствами (RGB, Grayscale и т.д.).
- Фильтры и эффекты: применение различных фильтров, таких как размытие или резкость.
- Рисование: добавление текста, фигур и других элементов поверх изображений.
- Анимация: работа с GIF-анимациями.
Установка
Для установки Pillow достаточно выполнить следующую команду:
pip install pillow
После установки можно импортировать библиотеку следующим образом:
from PIL import Image, ImageDraw, ImageFont, ImageFilter
Интересные лайфхаки с использованием Pillow
1. Быстрое изменение размера изображения с сохранением пропорций
Часто возникает задача уменьшить изображение до определённых размеров, сохраняя пропорции. С Pillow это легко:
from PIL import Image
image = Image.open("example.jpg")
image.thumbnail((800, 800)) # Устанавливаем максимальные размеры
image.save("resized_example.jpg")
thumbnail
автоматически сохраняет пропорции изображения.
2. Наложение водяного знака
Чтобы добавить водяной знак, можно использовать следующий код:
from PIL import Image, ImageDraw, ImageFont
# Открываем изображение
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)
# Указываем шрифт и текст
font = ImageFont.truetype("arial.ttf", 36)
text = "Watermark"
# Располагаем текст в правом нижнем углу
text_width, text_height = draw.textsize(text, font=font)
position = (image.width - text_width - 10, image.height - text_height - 10)
# Рисуем текст
draw.text(position, text, font=font, fill=(255, 255, 255, 128))
# Сохраняем изображение
image.save("watermarked_example.jpg")
3. Создание размытого фона
Этот приём популярен для создания постеров или миниатюр.
from PIL import Image, ImageFilter
image = Image.open("example.jpg")
blurred = image.filter(ImageFilter.GaussianBlur(15))
blurred.save("blurred_background.jpg")
Можно комбинировать размытый фон с другим изображением или текстом.
4. Слияние нескольких изображений
Если нужно объединить несколько изображений в одно, например, для создания коллажа:
from PIL import Image
# Открываем изображения
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")
# Создаём новое изображение, куда будем вставлять исходные
collage_width = image1.width + image2.width
collage_height = max(image1.height, image2.height)
collage = Image.new("RGB", (collage_width, collage_height))
# Вставляем изображения
collage.paste(image1, (0, 0))
collage.paste(image2, (image1.width, 0))
collage.save("collage.jpg")
5. Добавление рамки к изображению
Простой способ добавить рамку:
from PIL import ImageOps
image = Image.open("example.jpg")
bordered = ImageOps.expand(image, border=20, fill='black')
bordered.save("bordered_example.jpg")
Библиотека Pillow — это инструмент для работы с изображениями в Python. Она позволяет решать как простые задачи, так и реализовывать сложные эффекты.