1. Hazırlıq
Kombinasiya üçün şəkillərin yüklənməsi
Bir neçə şəkil ilə işləməyə başlamazdan əvvəl onları yükləmək lazımdır. Pillow JPEG, PNG, BMP, və GIF kimi ən məşhur şəkil formatları ilə işləməyə imkan verir.
from PIL import Image
# Şəkillərin yüklənməsi
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")
Burada biz iki şəkil yükləyirik: fon şəkli və üst-üstə qoyulacaq şəkil. Bəzi metodlar üçün hər iki şəklin eyni ölçüdə olması vacibdir.
2. Şəkillərin üst-üstə qoyulması
paste()
metodu
paste()
metodu bir şəkli digərinin üzərinə müəyyən koordinatlarda yerləşdirməyə imkan verir. Bu metod bir şəkli digərinin üzərinə qoymaq və ya kollaj effekti yaratmaq lazım olduqda faydalıdır.
# Ön planın ölçüsünü fonun ölçüsünə uyğunlaşdırmaq
foreground = foreground.resize(background.size)
# Şəkli fonun üzərinə yerləşdirmək
background.paste(foreground, (50, 50)) # foreground-u (50, 50) koordinatlarına yerləşdiririk
# Nəticəni saxlamaq
background.save("pasted_image.jpg")
Burada foreground
şəkli background
üzərinə (50, 50)
başlanğıc nöqtəsi ilə yerləşdirilir. Əgər ön plan fonun sərhədlərini keçərsə, o qismən kəsiləcək.
paste()
ilə maskadan istifadə etmə
paste()
metodu həmçinin maskaları dəstəkləyir, bu da şəffaf sahələri saxlayaraq şəkli qismən yerləşdirməyə imkan verir. Maska L
(boz tonlar) və ya RGBA
rejimində olmalıdır.
# Maskanın yaradılması
mask = Image.open("mask.png").convert("L") # Maskanı boz tonlarına çevirmək
# Maskalı şəkildə yerləşdirmə
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")
mask.png
maskası foreground
şəklinin hansı hissələrinin görünəcəyini müəyyən edir və şəkilləri bir-birinin üzərinə səliqəli şəkildə yerləşdirməyə imkan verir.
3. Şəkillərin Qarışdırılması
blend()
Metodu
blend()
metodu iki şəkli müəyyən şəffaflıqla qarışdırmağa imkan verir. Bu metod, iki başlanğıc şəklinin qarışığını təmsil edən yeni bir şəkil obyekti yaradır. blend()
istifadə etmək üçün hər iki şəkil eyni ölçüdə olmalıdır.
Şəkillərin Sadə Qarışdırılması
# Şəkillərin ölçüsünü eyni ölçüyə dəyişmək
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
# Şəkilləri şəffaflıq əmsalı ilə qarışdırmaq
blended_image = Image.blend(background, foreground, alpha=0.5)
# Nəticəni yadda saxlamaq
blended_image.save("blended_image.jpg")
alpha
parametri foreground
şəklinin şəffaflıq dərəcəsini müəyyən edir. Əgər alpha = 0.5
olarsa, şəkillər bərabər şəkildə qarışdırılır. alpha = 0.0
dəyəri foreground
şəklini tamamilə şəffaf edir (yalnız fon görünür), alpha = 1.0
isə fon şəklini tamamilə şəffaf edir (yalnız ön planda olan hissə görünür).
4. Maskadan istifadə edərək şəkillərin kompozisiyası
composite()
metodu
composite()
metodu maska əsasında iki şəkili birləşdirməyə imkan verir, hansı hissələrin hansı şəkildən görünəcəyini müəyyən edir. Bu metod mürəkkəb kompozisiyalar yaratmaq və bir şəkli digərinə dəqiq şəkildə qoymaq üçün çox uyğundur.
Misal: Şəkilləri birləşdirmək üçün composite()
istifadəsi
# Əmin olun ki, həm şəkillər, həm də maska eyni ölçüdədir
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))
# Maskadan istifadə edərək kompozisiya yaradılması
composited_image = Image.composite(foreground, background, mask)
# Şəklin saxlanılması
composited_image.save("composited_image.jpg")
Maska, son nəticədə hansı hissələrin foreground
və background
olacağını müəyyən edir. Maskanın ağ bölgələri foreground
-u, qara bölgələri isə background
-u göstərir.
5. Nümunələr
paste()
, blend()
və composite()
metodlarının birlikdə istifadəsi nümunəsi
İndi gəlin bu metodları bir yerdə istifadə edərək daha mürəkkəb bir kompozisiya yaradaq. Fərz edək ki, bizdə bir fon, bir yarım şəffaf təsvir və maska var.
from PIL import Image
# Şəkillərin yüklənməsi
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. Fonu və ön planı yarım şəffaflıqla qarışdırırıq
blended_image = Image.blend(background, foreground, alpha=0.3)
# 2. Maska ilə son şəkil üzərinə yerləşdirilməsi
final_composite = Image.composite(foreground, blended_image, mask)
# Son nəticəni yadda saxlayırıq
final_composite.save("final_composition.jpg")
Bu nümunə göstərir ki, blend()
və composite()
metodlarını ardıcıl olaraq tətbiq edərək çox qatlı kompozisiyalar yarada bilərik.
Təsvirlərin birləşdirilməsi metodlarının praktiki tətbiqi
- Kollajlar yaratmaq:
paste()
metodu bir neçə təsviri bir kətana əlavə etməyə imkan verir və bu, kollajlar və mozaikalar yaratmağa yararlıdır. - Örtük və şəffaflıq effektləri:
blend()
metodu şəkillər arasında yumşaq keçidlər yaratmağa imkan verir ki, bu da fotoşəkil düzəltmə və effektlər yaratmaq üçün əlverişlidir. - Maskalarla kompozisiyalar:
composite()
metodu dəqiq idarə etməyə imkan verir ki, hansı hissələr hansı təsvirin görünəcəyini və maskalardan istifadə edərək mürəkkəb kompozisiyalar yaratmağa imkan yaradır.
Metodların müqayisəsi
Metod | Təsvir | Tətbiq |
---|---|---|
paste() |
Bir təsvirin digərinin üzərinə yerləşdirilməsi | Kollajlar, təsvirlərin bir-birinin üzərinə yerləşdirilməsi |
blend() |
İki təsvirin verilən şəffaflıq ilə qarışdırılması | Yumşaq keçidlər və örtük effektləri |
composite() |
Maska əsasında iki təsvirin birləşdirilməsi | Mürəkkəb kompozisiyalar və dəqiq yerləşdirmə |
GO TO FULL VERSION