1. Підготовка
Завантаження зображень для комбінування
Перед початком роботи з декількома зображеннями їх необхідно завантажити. Pillow дозволяє працювати з більшістю популярних форматів зображень, таких як JPEG, PNG, BMP, і GIF.
from PIL import Image
# Завантаження зображень
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")
Тут ми завантажуємо два зображення: фон і зображення для накладання. Важливо пам'ятати, що для деяких методів обидва зображення мають бути однакового розміру.
2. Накладання зображень
Метод paste()
Метод paste() дозволяє вставити одне зображення поверх іншого на вказаних координатах. Цей метод корисний, якщо потрібно накласти одне зображення поверх іншого або створити ефект колажу.
# Зміна розміру переднього плану, щоб відповідати розміру фону
foreground = foreground.resize(background.size)
# Накладання зображення поверх фону
background.paste(foreground, (50, 50)) # Вставляємо foreground на координати (50, 50)
# Збереження результату
background.save("pasted_image.jpg")
Тут зображення foreground вставляється на background із початковою точкою вставки (50, 50). Якщо передній план виходить за межі фону, він буде частково обрізаний.
Використання маски з paste()
Метод paste() також підтримує маски, які дозволяють накласти зображення частково, зберігаючи його прозорі області. Маска має бути в режимі L (відтінки сірого) або RGBA.
# Створення маски
mask = Image.open("mask.png").convert("L") # Перетворюємо маску в відтінки сірого
# Вставка зображення з маскою
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")
Маска mask.png визначає, які частини зображення foreground будуть видимі, і дозволяє акуратно накласти одне зображення на інше.
3. Змішування зображень
Метод blend()
Метод blend() дозволяє змішувати два зображення із заданою прозорістю. Цей метод створює новий об'єкт зображення, який є сумішшю двох вихідних зображень. Щоб використовувати blend(), обидва зображення мають бути одного розміру.
Просте змішування зображень
# Зміна розміру зображень до однакового розміру
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
# Змішування зображень із коефіцієнтом прозорості
blended_image = Image.blend(background, foreground, alpha=0.5)
# Збереження результату
blended_image.save("blended_image.jpg")
Параметр alpha визначає ступінь прозорості зображення foreground. Якщо alpha = 0.5, зображення змішуються порівну. Значення alpha = 0.0 робить зображення foreground повністю прозорим (видно тільки фон), а alpha = 1.0 робить фонове зображення повністю прозорим (видно тільки передній план).
4. Композиція зображень із маскою
Метод composite()
Метод composite() дозволяє об'єднати два зображення на основі маски, визначаючи, які частини якого зображення будуть видимі. Цей метод дуже зручний для створення складних композицій і точного накладення одного зображення на інше.
Приклад: Використання composite() для комбінування зображень
# Переконаємося, що обидва зображення і маска мають однаковий розмір
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))
# Створення композиції з маскою
composited_image = Image.composite(foreground, background, mask)
# Збереження зображення
composited_image.save("composited_image.jpg")
Маска визначає, які частини foreground і background будуть видимі у фінальному зображенні. Білі області маски роблять видимим foreground, чорні — background.
5. Приклади
Приклад комбінованого використання методів paste(), blend() і composite()
Тепер давайте об'єднаємо ці методи, щоб створити більш складну композицію. Припустимо, що у нас є фон, зображення із напівпрозорістю і маска.
from PIL import Image
# Завантаження зображень
background = Image.open("background.jpg").resize((500, 500))
foreground = Image.open("foreground.png").resize((500, 500))
mask = Image.open("mask.png").convert("L").resize((500, 500))
# 1. Змішуємо фон і передній план із напівпрозорістю
blended_image = Image.blend(background, foreground, alpha=0.3)
# 2. Накладання з маскою на фінальне зображення
final_composite = Image.composite(foreground, blended_image, mask)
# Збереження остаточного результату
final_composite.save("final_composition.jpg")
Цей приклад показує, як можна послідовно застосовувати blend() і composite() для створення багатошарових композицій.
Практичне застосування методів об'єднання зображень
- Створення колажів: Метод
paste()дозволяє додавати кілька зображень на один холст, створюючи колажі та мозаїки. - Ефекти накладання і прозорості: Метод
blend()дає змогу створювати м'які переходи між зображеннями, що зручно для фотозамовлення та створення ефектів. - Композиції з масками: Метод
composite()дозволяє точно керувати, які частини якого зображення будуть видимі, і створювати складні композиції за допомогою масок.
Порівняння методів
| Метод | Опис | Застосування |
|---|---|---|
paste() |
Накладання одного зображення поверх іншого | Колажі, розміщення одного зображення на іншому |
blend() |
Змішування двох зображень із заданою прозорістю | Плавні переходи та ефекти накладання |
composite() |
Об'єднання двох зображень на основі маски | Складні композиції та точне накладання |
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ