CodeGym /Kursy /Python SELF PL /Scalanie i kombinowanie obrazków

Scalanie i kombinowanie obrazków

Python SELF PL
Poziom 45 , Lekcja 3
Dostępny

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.

Python

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.

Python

# 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.

Python

# 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

Python

# 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

Python

# 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ę.

Python

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

  1. Tworzenie kolaży: Metoda paste() pozwala dodać kilka obrazków na jedno płótno, tworząc kolaże i mozaiki.
  2. 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.
  3. 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
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION