1. EXIF metadatalarla işləmə
EXIF metadataları şəkilin xüsusiyyətləri haqqında məlumat saxlayır, məsələn, çəkiliş parametrləri (ISO, ekspozisiya, diafraqma), yaradılma tarixi, oriyentasiya və hətta çəkiliş yerinin koordinatları. EXIF-məlumatlarını çıxarmaq və şəkillərin təhlili və ya onların avtomatlaşdırılmış işlənməsi üçün istifadə etmək mümkündür.
EXIF-məlumatların çıxarılması
EXIF metadatalarını info
və ya getexif()
atributu vasitəsilə çıxarmaq olar. getexif()
metodu, əgər şəkildə varsa, tam EXIF-məlumat dəstinə girişi təmin edir.
# EXIF-məlumatların çıxarılması
exif_data = image._getexif()
# EXIF-in olub-olmamasını yoxlamaq
if exif_data is not None:
for tag_id, value in exif_data.items():
tag = Image.ExifTags.TAGS.get(tag_id, tag_id)
print(f"{tag}: {value}")
else:
print("EXIF-məlumatlar tapılmadı.")
Bu kodda Image.ExifTags.TAGS
EXIF tag identifikatorlarını oxunan adlara, məsələn, "DateTime"
, "ExposureTime"
, "ISOSpeedRatings"
və s. çevirmək üçün istifadə olunur. Əgər şəkil EXIF-məlumatlarını ehtiva etmirsə, funksiya sadəcə bu haqda mesaj göstərəcək.
2. Əsas metaməlumatların çıxarılması
EXIF metaməlumatları tez-tez çəkiliş parametrlərini, məsələn, çözünürlük, oriyentasiya və geolokasiyanı ehtiva edir. EXIF məlumatlarından mövcud olduqda bəzi dəyərləri necə əldə edəcəyimizi nəzərdən keçirək.
Çəkilişin vaxtı və tarixi, çözünürlük və oriyentasiyanın çıxarılması
from PIL.ExifTags import TAGS
# EXIF məlumatlarının olub-olmamasını yoxla
if exif_data is not None:
# Dəyərləri saxlamaq üçün dəyişənlərin ilkinləşdirilməsi
date_time = None
orientation = None
resolution = None
for tag_id, value in exif_data.items():
tag = TAGS.get(tag_id, tag_id)
# Teglər üzrə məlumatın çıxarılması
if tag == "DateTime":
date_time = value
elif tag == "Orientation":
orientation = value
elif tag == "XResolution" or tag == "YResolution":
resolution = value
print("Çəkilişin tarixi və vaxtı:", date_time)
print("Oriyentasiya:", orientation)
print("Çözünürlük:", resolution)
else:
print("EXIF məlumatları tapılmadı.")
Bu nümunədə DateTime
(çəkilişin tarixi və vaxtı), Orientation
(şəklin oriyentasiyası) və XResolution
/YResolution
(şəklin çözünürlüğü) qiymətləri çıxarılır. Belə məlumatlar şəkillərin sıralanması və ya hesabatların yaradılması zamanı tez-tez faydalıdır.
3. EXIF metadatalarını əlavə etmək və redaktə etmək
Pillow EXIF-məlumatlarının əlavə edilməsini məhdud dəstəkləyir, lakin əgər başlanğıc şəkildə mövcuddursa, şəkilləri çevirmə zamanı metadataları saxlamaq mümkündür.
Nümunə: Çevirmə zamanı metadataların saxlanılması
Şəkli saxlayarkən EXIF-məlumatlarını qorumaq üçün exif
parametrindən save()
metodunu çağırarkən istifadə edin.
# EXIF-nin mövcudluğunu yoxlamaq və metadatalarla saxlamaq
if exif_data is not None:
exif_bytes = image.info['exif']
image.save("converted_with_exif.jpg", exif=exif_bytes)
else:
print("EXIF-məlumatları mövcud deyil.")
Bu kod, şəkili başqa formata çevirdikdə EXIF-məlumatlarını saxlayır və buna görə də çəkilişin orijinal parametrlərini qoruyur.
4. Nümunələr:
Formatlar və EXIF metadataları ilə tam işləmə nümunəsi
Sonda, təsviri çevirib optimallaşdıran və EXIF-məlumatlarını saxlayan bir nümunəyə baxaq.
from PIL import Image, ExifTags
# Təsviri açmaq
image = Image.open("original.jpg")
# EXIF-məlumatlarının mövcudluğunu yoxlamaq
exif_data = image._getexif()
if exif_data:
exif_bytes = image.info['exif'] # Sonrakı istifadəyə görə EXIF-məlumatlarını saxla
else:
print("EXIF-məlumatları yoxdur.")
# Təsviri PNG formatına çevirmək və optimallaşdırmaq
image_png = image.convert("RGB")
image_png.save("optimized_image.png", optimize=True)
# EXIF-məlumatlarını saxlayaraq və keyfiyyəti azaldaraq JPEG-ə çevirmək
if exif_data:
image.save("compressed_with_exif.jpg", quality=85, exif=exif_bytes)
else:
image.save("compressed_without_exif.jpg", quality=85)
Bu kod aşağıdakılar daxildir:
- Təsviri optimallaşdırılmış PNG formatına çevirmək.
- Ölçünü optimallaşdırmaq üçün keyfiyyəti azaldaraq JPEG formatına çevirmək.
- EXIF-məlumatları mövcuddursa, onları çevirmə zamanı saxlamaq.
Formatlar və EXIF metadataları ilə işləmənin praktiki tətbiqi
- Veb üçün təsvirlərin optimallaşdırılması: JPEG və PNG kimi optimallaşdırılmış formatlara çevirmək, fayl ölçüsünü azaltmaq və səhifələrin yükləmə sürətini artırır.
- Hesabatlar üçün məlumatların çıxarılması: EXIF metadataları, fotoşəkillərin təhlili və hesabatların hazırlanması üçün faydalı ola biləcək çəkmə parametrləri haqqında məlumat ehtiva edir.
- Redaktə zamanı metadataların saxlanılması: Təsvirləri redaktə edərkən ilkin çəkmə parametrlərini saxlamaq mümkündür ki, bu da arxivləşdirmə və sənədləşdirmə üçün faydalıdır.
GO TO FULL VERSION