1. Przycinanie obrazów
Pojęcie przycinania i jego zastosowanie
No to zaczynamy odkrywać, jak przycinać i obracać obrazy. Ta umiejętność przyda się w różnych projektach — od przygotowania grafiki na strony internetowe po tworzenie treści na media społecznościowe.
Przycinanie obrazu to jak odcięcie niepotrzebnych brzegów zdjęcia, aby skupić się na głównym obiekcie. Wyobraź sobie, że zrobiłeś świetne zdjęcie zachodu słońca, ale na brzegach znalazły się przypadkowe ciekawskie osoby. Przycinanie pomoże ci się ich pozbyć (oczywiście wirtualnie), bez wyroków sądowych!
Metoda crop()
Metoda crop()
przyjmuje współrzędne prostokątnego obszaru, który chcesz wyciąć z obrazu. Współrzędne podawane są jako cztery wartości:
(lewa, górna, prawa, dolna)
.
# Przycinanie obrazu
cropped_image = image.crop((100, 100, 400, 400))
# Zapis przyciętego obrazu
cropped_image.save("cropped_example.jpg")
W tym przykładzie obraz zostanie przycięty do obszaru z lewym górnym rogiem w punkcie (100, 100)
, a prawym dolnym rogiem w punkcie (400, 400)
. Ta metoda tworzy nowy obraz z podanej części oryginalnego obrazu.
Dynamiczne przycinanie na podstawie rozmiarów obrazu
Jeśli chcesz przyciąć obraz do jego środka, możesz obliczyć współrzędne przycinania na podstawie jego rozmiarów:
width, height = image.size
left = (width - 200) / 2
top = (height - 200) / 2
right = (width + 200) / 2
bottom = (height + 200) / 2
center_cropped_image = image.crop((left, top, right, bottom))
center_cropped_image.save("center_cropped_example.jpg")
Ten kod przycina centralną część obrazu o rozmiarze 200x200 pikseli. Obliczenie współrzędnych gwarantuje, że przycięty obszar będzie znajdował się w środku obrazu.
2. Obracanie obrazu
Obracanie obrazu pozwala zmienić jego orientację, co jest szczególnie przydatne, jeśli zdjęcie zostało wykonane w niewłaściwej orientacji lub jeśli chcesz stworzyć efekt artystyczny.
Metoda rotate()
Metoda rotate()
obraca obraz o podany kąt w kierunku przeciwnym do ruchu wskazówek zegara. Kąt podawany jest w stopniach, a metoda tworzy nowy obrócony obraz.
# Obrót obrazu o 90 stopni przeciwnie do ruchu wskazówek zegara
rotated_image = image.rotate(90)
rotated_image.save("rotated_90_example.jpg")
W tym przykładzie obraz zostanie obrócony o 90 stopni przeciwnie do ruchu wskazówek zegara. Możesz także ustawić inny kąt obrotu (np. 45, 180 lub 270 stopni), aby osiągnąć pożądany efekt.
Zarządzanie białymi polami przy obrocie
Domyślnie rotate()
dodaje białe pola (lub przezroczyste, jeśli używany jest tryb RGBA) na krawędziach obrazu, aby zachować całą jego zawartość. Jeśli chcesz, aby obraz wypełnił cały kadr bez pól, użyj parametru
expand=True
.
# Obrót z rozszerzeniem obrazu, aby wypełnił cały kadr
rotated_expanded_image = image.rotate(45, expand=True)
rotated_expanded_image.save("rotated_expanded_example.jpg")
W tym przypadku Pillow zwiększy rozmiar obrazu, aby pomieścić całą jego zawartość, co jest przydatne przy obrotach pod niestandardowe kąty (np. 45 stopni).
3. Odbicie lustrzane obrazu
Odbicie lustrzane pozwala odwrócić obraz poziomo lub pionowo. Jest to przydatne, gdy chcesz zmienić kierunek obiektu na zdjęciu lub stworzyć symetryczny efekt.
Metoda transpose()
Metoda transpose()
służy do odbicia lustrzanego i obsługuje następujące parametry:
Image.FLIP_LEFT_RIGHT
: Odbicie poziome.Image.FLIP_TOP_BOTTOM
: Odbicie pionowe.
# Odbicie poziome
flipped_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_horizontal.save("flipped_horizontal_example.jpg")
# Odbicie pionowe
flipped_vertical = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_vertical.save("flipped_vertical_example.jpg")
Te polecenia odwracają obraz poziomo i pionowo, co można wykorzystać do różnych efektów lub do poprawy orientacji.
Przykłady praktycznego zastosowania przycinania, obrotów i odbicia lustrzanego
- Skupienie na konkretnej części obrazu: Przycinanie pozwala wyeksponować potrzebną część obrazu, co jest przydatne przy tworzeniu portretów, usuwaniu zbędnych detali oraz przygotowywaniu obrazów na media społecznościowe lub strony internetowe.
- Poprawa orientacji obrazu: Obracanie używane jest do poprawy orientacji zdjęcia, szczególnie jeśli urządzenie zrobiło je w niewłaściwej pozycji. Przykładem może być poprawa zdjęcia wykonanego w orientacji poziomej, aby opublikować je w orientacji pionowej.
- Tworzenie symetrycznych efektów: Odbicie lustrzane często używane jest w projektowaniu do tworzenia symetrycznych obrazów, interesujących efektów wizualnych i poprawy kompozycji.
4. Typowe błędy i jak ich unikać
Podczas pracy z Pillow czasami pojawiają się błędy, które prawdopodobnie napotka każdy początkujący. Jednym z takich błędów jest próba przycięcia obrazu poza jego rzeczywiste rozmiary. Zawsze sprawdzaj rozmiar obrazu i ustawiaj współrzędne przycinania w jego granicach.
Kolejną kwestią jest to, że podczas obrotu obraz może wyglądać na przycięty, jeśli używasz metody rotate
bez dodatkowych ustawień. Dzieje się tak z powodu zmiany rozmiaru obrazu podczas obrotu. Aby tego uniknąć, użyj parametru expand=True
, który automatycznie dopasowuje rozmiar:
# Obrót obrazu o 45 stopni z rozszerzeniem, aby uniknąć przycięcia rogów
rotated_image = image.rotate(45, expand=True)
rotated_image.save("rotated_expanded.jpg")
GO TO FULL VERSION