Объединение изображений в Pillow

Объединение и комбинирование изображений с Pillow в Python

Библиотека Pillow в Python предоставляет удобные инструменты для объединения нескольких изображений в одно, открывая широкие возможности для создания креативных композиций. Рассмотрим различные методы объединения изображений в библиотеке Pillow с подробными примерами.

Методы объединения изображений

Метод paste() в библиотеке Pillow используется для наложения одного изображения на другое. Этот метод позволяет объединять изображения, применять маски прозрачности и управлять их позиционированием.

Синтаксис:

Image.paste(im, box=None, mask=None)

Параметры:

  • im: Изображение, которое вы хотите наложить.
  • box (опционально): Кортеж, представляющий область, куда будет вставлено изображение. Формат: (left, top, right, bottom).
  • mask (опционально): Маска прозрачности. Если указана, она будет использована для определения областей, которые будут видимы, и областей, которые будут прозрачными.

Примечания:

  • Параметр box позволяет указать область, в которую будет вставлено изображение. Если box не указан, изображение вставляется в верхний левый угол.
  • Параметр mask используется для определения областей прозрачности. Если маска не указана, используется весь альфа-канал второго изображения.

Объединение изображений в коллаж

Горизонтальное объединение

from PIL import Image

# Открываем изображения
image_path1 = "example.jpg"
image_path2 = "example_2.jpg"

image1 = Image.open(image_path1)
image2 = Image.open(image_path2)

# Горизонтально объединяем изображения
result_image = Image.new("RGB", (image1.width + image2.width, image1.height))
result_image.paste(image1, (0, 0))
result_image.paste(image2, (image1.width, 0))
result_image.show()

У нас было 2 изображения:

Результат:

Вертикальное объединение

from PIL import Image

# Открываем изображения
image_path1 = "example.jpg"
image_path2 = "example_2.jpg"

image1 = Image.open(image_path1)
image2 = Image.open(image_path2)

# Вертикально объединяем изображения
result_image = Image.new("RGB", (image1.width, image1.height + image2.height))
result_image.paste(image1, (0, 0))
result_image.paste(image2, (0, image1.height))
result_image.show()

Результат:

Простое наложение одного изображения на другое

from PIL import Image

# Открываем изображения
image_path1 = "example.jpg"
image_path2 = "example_2.jpg"

image1 = Image.open(image_path1)
image2 = Image.open(image_path2)

image1.paste(image2)

image1.show()

Результат:

Мы видим только второе изображение, которые просто перекрыло первое, давайте исправим это.

from PIL import Image

# Открываем изображения
image_path1 = "example.jpg"
image_path2 = "example_2.jpg"

image1 = Image.open(image_path1)
image2 = Image.open(image_path2)

image1.paste(image2, box=(image1.width//2, image1.height//2))

image1.show()

Здесь с помощью параметра box мы определили область наложения в виде кортежа (координаты верхнего левого угла).

Результат:

Заключение

Объединение изображений в библиотеке Pillow предоставляет широкие возможности для создания разнообразных композиций. Экспериментируйте с различными методами объединения, наложения, и комбинирования цветовых каналов, чтобы достичь желаемых эффектов. Важно также учитывать возможности применения фильтров и эффектов для придания уникального стиля вашим изображениям.

Содержание: