CodeGym /Kurslar /Python SELF AZ /Metadata ilə iş

Metadata ilə iş

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

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.

Python

# 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ı

Python

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.

Python

# 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.

Python

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.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION