CodeGym /Kurslar /Python SELF AZ /Formatların idarə olunması və konvertasiya

Formatların idarə olunması və konvertasiya

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

1. Şəkil formatının müəyyənləşdirilməsi

Dəstəklənən şəkil formatları

Pillow bir çox şəkil formatları ilə işləyə bilir, o cümlədən:

  • JPEG (JPG): Ən populyar şəkil formatlarından biridir. Keyfiyyət itkisi ilə sıxışdırır, amma fayl ölçüsünü xeyli azaldır. Şəffaflığı dəstəkləmir.
  • PNG: Keyfiyyət itkisi olmayan və şəffaflığı (alfa-kanalı) dəstəkləyən format. Loqolar, ikonlar və keyfiyyətin vacib olduğu şəkillər üçün uyğundur.
  • BMP: Sıxışdırılmamış, yüksək keyfiyyətli formatdır, amma faylın ölçüsü böyükdür. Şəffaflığı dəstəkləyir.
  • TIFF: Keyfiyyət itkisi olmayan şəkillərin saxlanması üçün populyardır. Çap sahəsində tez-tez istifadə olunur.
  • WEBP: Yüksək sıxışdırma dərəcəsi və şəffaflığı dəstəkləyən müasir format. Veb şəkilləri üçün uyğundur, çünki kiçik fayl ölçüsündə yaxşı keyfiyyət təklif edir.

Konvertasiya üçün şəklin yüklənməsi

Şəkli konvertasiya etməzdən əvvəl onu Image.open() metodu ilə yükləmək lazımdır.

Python

from PIL import Image

# Şəkilin açılması
image = Image.open("example.jpg")
print(image.format)  # Şəkilin orijinal formatını yoxlayırıq

2. Şəkli başqa formata çevirmək

save() metodu, sadəcə fayl adına uzantı əlavə etməklə və ya formatı açıq şəkildə göstərməklə şəkilləri müxtəlif formatlarda saxlamağa imkan verir.

JPEG-i PNG-yə çevirmək

JPEG formatından PNG-yə çevirmək üçün sadəcə faylı saxlayarkən yeni uzantı daxil edin:

Python

# Şəkli PNG formatında saxlamaq
image.save("example_converted.png")

Bu kod şəkli JPEG formatından PNG formatına çevirir və onu göstərilən adla saxlayır. PNG, itkisiz şəkil saxlamaq və şəffaf sahələri dəstəkləmək üçün əla seçimdir.

PNG-i JPEG-ə çevirmək

PNG formatından JPEG-ə çevirmək də mümkündür, lakin yadda saxlamaq vacibdir ki, JPEG şəffaflığı dəstəkləmir. Çevirmə zamanı şəffaf sahələr ağ rənglə doldurulacaq.

Python

# PNG-i JPEG-ə çevirmək (şəffaflıq ağ fondla əvəz ediləcək)
image = image.convert("RGB")  # JPEG üçün lazım olan RGB rejiminə keçid
image.save("example_converted.jpg", "JPEG")

convert("RGB") metodu, JPEG-in şəffaf sahələri dəstəkləmədiyi üçün şəkli RGB rejiminə çevirmək üçün istifadə olunur. Bu, faylı JPEG formatında saxlamaq üçün zəruridir.

3. Şəkil keyfiyyətinin idarə edilməsi

Pillow optimizasiya üçün qualityoptimize parametrlərini təklif edir, hansı ki, faylın keyfiyyətini və ölçüsünü idarə etməyə imkan verir. Bu parametrlər xüsusilə JPEG və PNG üçün faydalıdır.

JPEG keyfiyyətinin optimizasiyası və idarə edilməsi

JPEG formatında şəkli saxlayarkən, quality parametri sıxılma dərəcəsini tənzimləyir. Keyfiyyət göstəricisi yüksəldikcə, fayl ölçüsü də artır və şəkil keyfiyyəti yaxşılaşır. quality qiyməti 1-dən 95-ə qədər dəyişir (default olaraq 75).

Python

# Keyfiyyəti azaldılmış JPEG şəkli saxlamaq
image.save("example_compressed.jpg", "JPEG", quality=85)

Bu kod keyfiyyət göstəricisi 85 olan şəkli saxlayır, bu isə adətən yaxşı keyfiyyəti və kiçildilmiş fayl ölçüsünü qorumağa imkan yaradır. Əgər daha aşağı keyfiyyət tələb olunursa, məsələn, xırda şəkillər yaratmaq üçün quality=50 göstərilə bilər.

PNG optimizasiyası

PNG üçün optimize=True parametri, artıq məlumatları silərək zərərsiz sıxılma əməliyyatı həyata keçirir. Bu, xüsusilə internetdə şəkillər yayımlamaq üçün çox faydalıdır.

Python

# Optimizasiya edilmiş PNG saxlanılması
image.save("example_optimized.png", "PNG", optimize=True)

PNG optimizasiyası, keyfiyyəti itirmədən fayl ölçüsünü azaltmağa imkan verir. Bu, xüsusən logo və ikonlar üçün önəmlidir, çünki hər kilobayt vacib ola bilər.

Fərqli sıxılma səviyyələri ilə JPEG keyfiyyətinin müqayisəsi

Gəlin baxaq, quality parametrinin dəyişdirilməsi fayl ölçüsünə və şəkil keyfiyyətinə necə təsir edir.

Python

# Fərqli keyfiyyətlə JPEG şəkili saxlamaq
image.save("quality_95.jpg", "JPEG", quality=95)
image.save("quality_75.jpg", "JPEG", quality=75)
image.save("quality_50.jpg", "JPEG", quality=50)

Bu nümunədə biz eyni şəkli 95, 75 və 50 olmaqla üç fərqli keyfiyyətdə saxlayırıq. 95 keyfiyyəti ilə olan şəkil orijinaldan demək olar ki, fərqlənməyəcək, amma daha çox yer tutacaq, 50 keyfiyyəti isə daha böyük sıxılma və ola bilsin ki, gözə çarpacaq detal itkisinə səbəb olacaq.

4. WebP formatından istifadə

WebP formatı – müasir bir formatdır və həm itkilərlə, həm də itkiz sıxılmanı, eyni zamanda şəffaflığı dəstəkləyir. Bu, yüksək səviyyəli sıxılma nəticəsində internetdə geniş istifadə olunur.

Şəkili WebP formatına çevirmək

Python

# Şəkili WebP formatına çevirmək
image.save("example.webp", "WEBP", quality=80)

Bu nümunədə biz şəkili WebP formatında 80 keyfiyyəti ilə saxlayırıq. WebP forması JPEG və ya PNG ilə müqayisədə daha oxşar keyfiyyətlə xeyli kiçik fayl ölçüsü əldə etməyə imkan verir.

Optimallaşdırma ilə tam çevirmə nümunəsi

İndi öyrəndiyimiz bütün metodları birləşdirib, bir neçə formata optimallaşdırma ilə şəkil çevirmək üçün skript yazacağıq.

Python

from PIL import Image

# Şəkili açmaq
image = Image.open("example.jpg")

# PNG formatına optimallaşdırma ilə çevirmək
image.save("converted_optimized.png", "PNG", optimize=True)

# JPEG formatına keyfiyyəti azaldaraq çevirmək
image_rgb = image.convert("RGB")  # JPEG üçün RGB moduna keçirmək
image_rgb.save("converted_compressed.jpg", "JPEG", quality=85)

# WebP formatına keyfiyyəti optimallaşdıraraq çevirmək
image_rgb.save("converted_optimized.webp", "WEBP", quality=80)

Bu nümunədə:

  • Biz şəkili PNG formatına optimallaşdırma ilə çeviririk, bu isə heç bir itki olmadan fayl ölçüsünü azaldır.
  • Şəkili JPEG formatında 85 keyfiyyəti ilə saxlayırıq, bu yaxşı keyfiyyət və kiçik fayl ölçüsünə zəmanət verir.
  • Şəkili WebP formatına çeviririk, bu internetdə yayım üçün idealdır və yüksək keyfiyyəti kiçik fayl ölçüsü ilə saxlayır.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION