CodeGym /Kurslar /Python SELF AZ /Şəkillərin ölçüsünü dəyişmək

Şəkillərin ölçüsünü dəyişmək

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Şəkillərin yüklənməsi və saxlanması

Pillow-da şəkilləri yükləmək üçün Image sinfi istifadə olunur. Şəkil yükləndikdən sonra onu çevirmək və müxtəlif formatlarda saxlamaq olar. Gəlin şəkillərin yüklənməsi və saxlanması üzrə əsas əməliyyatlara baxaq.

Şəklin yüklənməsi

Şəklinizi yükləmək üçün Image.open() metodundan istifadə edin. Bu metod dəstəklənən istənilən formatdakı şəkli açmağa imkan verir.

Python

from PIL import Image

# Şəkilin açılması
image = Image.open("example.jpg")

# Fayl haqqında məlumatın çap edilməsi
print(image.format)  # Şəklin formatı, məsələn, JPEG və ya PNG
print(image.size)    # Şəklin ölçüləri (genişlik, hündürlük)
print(image.mode)    # Rəng rejimi, məsələn, RGB və ya Grayscale

Bu kod example.jpg adlı şəkli yükləyir və onun əsas xarakteristikalarını çap edir: format, ölçü və rəng rejimi. Əgər şəkil eyni qovluqda deyil, tam fayl yolunu göstərməlisiniz.

Şəklin saxlanması

Şəkil yükləndikdən və dəyişdirildikdən sonra onu başqa istənilən formatda saxlaya bilərsiniz, sadəcə faylın adında uyğun genişlənməni göstərərək. save() metodu çıxış faylının adını və formatını təyin etməyə imkan verir.

Python

# Şəkilin başqa formatda saxlanması
image.save("example.png")  # Şəkli PNG formatında saxlayır

Ayrıca, JPEG formatında şəkillərin fayl ölçüsünü azaltmaq üçün saxlanan faylın keyfiyyətini dəyişdirə bilərsiniz, bu xüsusilə faylların ölçüsünü kiçiltmək üçün faydalıdır.

Python

# Keyfiyyəti dəyişdirərək saxlama
image.save("compressed_example.jpg", quality=85)  # quality dəyəri 1 ilə 95 arasında dəyişir

2. Şəklin ölçüsünün dəyişdirilməsi

Ölçünün dəyişdirilməsi şəkillərlə işləyərkən ən çox yayılmış tapşırıqlardan biridir. Pillow bir neçə ölçü dəyişdirmə üsulu təklif edir, bunlara eni və uzunluğu konkret parametrlərlə dəyişdirmək, proporsional dəyişdirmə və thumbnail yaratmaq daxildir.

resize() metodu ilə ölçünü dəyişmək

resize() metodu şəklin dəqiq ölçülərini (eni və uzunluğu) təyin etməyə imkan verir, lakin yeni ölçülər ilkin proporsiyaları saxlamırsa, şəkil təhrif oluna bilər.

Python

# Yeni ölçülərin təyin edilməsi
new_size = (800, 600)
resized_image = image.resize(new_size)

# Azaldılmış şəkli saxlamaq
resized_image.save("resized_example.jpg")

Bu nümunədə şəkil 800x600 piksel ölçüsünə dəyişdirilir və yeni fayl kimi saxlanılır. Əgər ilkin şəkil başqa proporsiyalara malikdirsə, o, yeni ölçülərə uyğunlaşdırılmaq üçün dartılacaq və ya sıxılacaq.

Proporsional ölçü dəyişikliyi üçün thumbnail() metodu

Şəklin ölçüsünü dəyişmək üçün, onun proporsiyalarını saxlayaraq, thumbnail() metodundan istifadə edin. Bu metod avtomatik olaraq şəkli belə azaldır ki, o, verilmiş ölçülərə uyğun olsun və ilkin proporsiyaları saxlasın. Bu xüsusilə şəkillər üçün thumbnail yaratmaq üçün faydalıdır.

Python

# Maksimum 400x400 piksel ölçüləri ilə thumbnail yaratmaq
image.thumbnail((400, 400))

# Thumbnail-i saxlamaq
image.save("thumbnail_example.jpg")

thumbnail() metodu şəkli "yerində" dəyişir, yəni dəyişikliklər ilkin image obyektində aparılır. thumbnail() icra edildikdən sonra Pillow şəkli belə azaldacaq ki, onun ölçüləri 400x400 pikseli keçməsin və proporsiyalar saxlanılsın.

ImageOps.fit() ilə proporsiyaları nəzərə alaraq ölçü dəyişmə

Bəzən şəkilin ölçüsünü dəyişmək lazımdır ki, o dəqiq verilmiş ölçülərə uyğun olsun, lakin proporsiyalar saxlanılsın, artıq hissələr kəsilsin. Belə hallarda ImageOps.fit() metodunu istifadə edə bilərsiniz.

Python

from PIL import ImageOps

# Yeni ölçülərin təyin edilməsi
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)

# Kəsilmiş şəkli saxlamaq
fitted_image.save("fitted_example.jpg")

ImageOps.fit() metodu avtomatik olaraq şəkli kəsir ki, o verilmiş ölçülərə uyğun gəlsin və təhrif olmasın. Məsələn, əgər ilkin şəkil düzbucaqlıdırsa, metod onu kvadrat etmək üçün kənarlarını kəsəcək və 400x400 piksel ölçüsünə uyğunlaşdıracaq.

3. Tam kod nümunəsi

Aşağıda bütün nəzərdən keçirilmiş metodları birləşdirən kod nümunəsi verilmişdir — şəkilləri yükləməkdən ölçülərin dəyişdirilməsi və saxlanmasına qədər.

Python

from PIL import Image, ImageOps

# Şəkli açırıq
image = Image.open("example.jpg")

# Ölçüləri proporsiyaları qoruyub saxlamaq olmadan dəyişmək
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")

# Şəkilin proporsional olaraq kiçildilməsi
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")

# Tələb olunan ölçülərə qədər kəsərək miqyaslama
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")

Ölçülərin dəyişdirilməsi metodlarına izah

  1. resize(): istənilən ölçüləri təyin etməyə imkan verir, lakin əgər yeni ölçülər orijinalın proporsiyalarına uyğun deyilsə, şəkil təhrif oluna bilər.
  2. thumbnail(): şəkilin ölçülərini proporsiyaları qoruyaraq dəyişir. Böyük şəkilləri kiçiltmək və miniatur yaratmaq üçün faydalıdır.
  3. ImageOps.fit(): şəkli kənarlarını kəsərək tələb olunan ölçülərə miqyaslayır. Təhrif olmadan dəqiq ölçülərə uyğunlaşmaq lazım olduğu hallarda tətbiq edilir.

4. Tövsiyələr:

Şəkillərin ölçülərinin dəyişdirilməsinin praktiki tətbiqi

  1. Veb-saytlar üçün şəkillərin optimizasiyası: Böyük şəkillər səhifənin yüklənməsini ləngidə bilər, buna görə də onların ölçüsünü itkisiz kiçiltməklə optimizasiya etmək çox vacibdir.
  2. Qalereyalar üçün kiçik şəkillərin yaradılması: thumbnail() istifadə edərək şəkillərin önizləmə şəklində göstərilə bilən kiçik versiyalarını tez bir zamanda yarada bilərsiniz.
  3. Şəkilləri müəyyən ölçülərə uyğunlaşdırma: Məsələn, avatar və ya profil üçün şəkilləri dəqiq ölçülərə uyğunlaşdırmaq lazım olduqda, ImageOps.fit() metodu şəkli kəsib və ölçüləndirərək bu tələblərə cavab verən hala gətirir.

Metodların seçilməsinə dair tövsiyələr

Şəklin eni və hündürlüyünü dəqiq göstərmək tələb olunursa və proporasiyaların dəyişməsi problem deyilsə, resize() istifadə edin.

Kiçik şəkillər yaratmaq və ya şəkli proporasiyalarını qoruyaraq kiçiltmək istədikdə thumbnail() tətbiq edin.

Şəklin müəyyən ölçülər üçün lazım olduğu, lakin proporasiyaların pozulmasının arzuolunmaz olduğu hallarda ImageOps.fit() istifadə edin. Bu metod artıq hissələri kəsir ki, şəkil lazım olan çərçivələrə uyğun olsun.

1
Tapşırıq
Python SELF AZ, səviyyə, dərs
Bağlanıb
Şəkillərlə əsas işləmə
Şəkillərlə əsas işləmə
2
Tapşırıq
Python SELF AZ, səviyyə, dərs
Bağlanıb
Şəkillərin proporsional kiçildilməsi
Şəkillərin proporsional kiçildilməsi
3
Tapşırıq
Python SELF AZ, səviyyə, dərs
Bağlanıb
Şəkilin ölçüsünün dəyişdirilməsi və kəsilməsi
Şəkilin ölçüsünün dəyişdirilməsi və kəsilməsi
4
Tapşırıq
Python SELF AZ, səviyyə, dərs
Bağlanıb
Veb-qalereya üçün ölçü dəyişikliklərinin avtomatlaşdırılması
Veb-qalereya üçün ölçü dəyişikliklərinin avtomatlaşdırılması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION