1. Przygotowanie
Ładowanie obrazków do kombinowania
Przed rozpoczęciem pracy z wieloma obrazkami należy je załadować. Pillow pozwala pracować z większością popularnych formatów obrazków, takich jak JPEG, PNG, BMP i GIF.
from PIL import Image
# Ładowanie obrazków
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")
Tutaj ładujemy dwa obrazki: tło i obrazek do nałożenia. Ważne jest, aby pamiętać, że w przypadku niektórych metod oba obrazki muszą mieć ten sam rozmiar.
2. Nakładanie obrazków
Metoda paste()
Metoda paste()
pozwala wstawić jeden obrazek na drugi w podanych współrzędnych. Ta metoda jest przydatna, jeśli trzeba nałożyć jeden obrazek na drugi lub stworzyć efekt kolażu.
# Zmiana rozmiaru pierwszego planu, aby dopasować do tła
foreground = foreground.resize(background.size)
# Nakładanie obrazka na tło
background.paste(foreground, (50, 50)) # Wstawiamy foreground na współrzędne (50, 50)
# Zapisanie rezultatu
background.save("pasted_image.jpg")
Tutaj obrazek foreground
zostaje wstawiony na background
z początkowym punktem wstawienia (50, 50)
. Jeśli pierwszy plan wychodzi poza granice tła, zostanie częściowo przycięty.
Użycie maski z paste()
Metoda paste()
obsługuje również maski, które pozwalają na częściowe nałożenie obrazka, zachowując jego przezroczyste obszary. Maska musi być w trybie L
(odcienie szarości) lub RGBA
.
# Tworzenie maski
mask = Image.open("mask.png").convert("L") # Konwerujemy maskę na odcienie szarości
# Wstawienie obrazka z maską
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")
Maska mask.png
określa, które części obrazka foreground
będą widoczne i pozwala na precyzyjne nałożenie jednego obrazka na drugi.
3. Mieszanie obrazków
Metoda blend()
Metoda blend()
pozwala mieszać dwa obrazki z podaną przezroczystością. Ta metoda tworzy nowy obiekt obrazka, będący mieszanką dwóch obrazków bazowych. Aby użyć blend()
, oba obrazki muszą mieć ten sam rozmiar.
Proste mieszanie obrazków
# Zmiana rozmiaru obrazków, aby miały ten sam rozmiar
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
# Mieszanie obrazków z współczynnikiem przezroczystości
blended_image = Image.blend(background, foreground, alpha=0.5)
# Zapisanie rezultatu
blended_image.save("blended_image.jpg")
Parametr alpha
określa stopień przezroczystości obrazka foreground
. Jeśli alpha = 0.5
, obrazki są mieszane równomiernie. Wartość alpha = 0.0
sprawia, że obrazek foreground
jest całkowicie przezroczysty (widoczne jest tylko tło), a alpha = 1.0
sprawia, że obrazek tła jest całkowicie przezroczysty (widoczny jest tylko pierwszy plan).
4. Kompozycja obrazków z maską
Metoda composite()
Metoda composite()
pozwala łączyć dwa obrazki na podstawie maski, określając, które części którego obrazka będą widoczne. Ta metoda jest bardzo użyteczna do tworzenia skomplikowanych kompozycji i precyzyjnego nakładania jednego obrazka na drugi.
Przykład: Użycie composite()
do kombinowania obrazków
# Upewnijmy się, że oba obrazki i maska mają ten sam rozmiar
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))
# Tworzenie kompozycji z maską
composited_image = Image.composite(foreground, background, mask)
# Zapisanie obrazka
composited_image.save("composited_image.jpg")
Maska określa, które części foreground
i background
będą widoczne w końcowym obrazku. Białe obszary maski ukazują foreground
, czarne — background
.
5. Przykłady
Przykład połączonego użycia metod paste()
, blend()
i composite()
Teraz połączmy te metody, aby stworzyć bardziej złożoną kompozycję. Załóżmy, że mamy tło, obrazek z półprzezroczystością i maskę.
from PIL import Image
# Ładowanie obrazków
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. Mieszamy tło i pierwszy plan z półprzezroczystością
blended_image = Image.blend(background, foreground, alpha=0.3)
# 2. Nakładanie z maską na końcowy obrazek
final_composite = Image.composite(foreground, blended_image, mask)
# Zapisanie końcowego rezultatu
final_composite.save("final_composition.jpg")
Ten przykład pokazuje, jak można kolejno stosować blend()
i composite()
, aby stworzyć wielowarstwowe kompozycje.
Praktyczne zastosowanie metod łączenia obrazków
- Tworzenie kolaży: Metoda
paste()
pozwala dodać kilka obrazków na jedno płótno, tworząc kolaże i mozaiki. - Efekty nakładania i przezroczystości: Metoda
blend()
daje możliwość tworzenia płynnych przejść między obrazkami, co jest wygodne do edycji zdjęć i tworzenia efektów. - Kompozycje z maskami: Metoda
composite()
pozwala precyzyjnie kontrolować, które części którego obrazka będą widoczne, i tworzyć złożone kompozycje za pomocą masek.
Porównanie metod
Metoda | Opis | Zastosowanie |
---|---|---|
paste() |
Nakładanie jednego obrazka na drugi | Kolaże, umieszczanie jednego obrazka na drugim |
blend() |
Mieszanie dwóch obrazków z podaną przezroczystością | Płynne przejścia i efekty nakładania |
composite() |
Łączenie dwóch obrazków na podstawie maski | Złożone kompozycje i precyzyjne nakładanie |
GO TO FULL VERSION