CodeGym /Java Kurs /Python SELF DE /Arbeiten mit Metadaten

Arbeiten mit Metadaten

Python SELF DE
Level 46 , Lektion 3
Verfügbar

1. Arbeiten mit EXIF-Metadaten

EXIF-Metadaten speichern Informationen über Bildattribute, wie Aufnahmeparameter (ISO, Verschlusszeit, Blende), Erstellungsdatum, Ausrichtung und sogar GPS-Koordinaten. EXIF-Daten können extrahiert und zur Analyse von Bildern oder Automatisierung ihrer Verarbeitung verwendet werden.

Extrahieren von EXIF-Daten

EXIF-Metadaten können mit dem Attribut info oder getexif() abgerufen werden. Die Methode getexif() bietet Zugriff auf den gesamten Satz von EXIF-Daten, falls sie im Bild vorhanden sind.

Python

# Extrahieren von EXIF-Daten
exif_data = image._getexif()

# Überprüfung auf vorhandene EXIF-Daten
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-Daten nicht gefunden.")

In diesem Code wird Image.ExifTags.TAGS verwendet, um die EXIF-Tag-IDs in lesbare Namen wie "DateTime", "ExposureTime", "ISOSpeedRatings" usw. zu dekodieren. Wenn das Bild keine EXIF-Daten enthält, gibt die Funktion einfach eine Nachricht darüber aus.

2. Extrahieren von Schlüsselinformationen aus Metadaten

EXIF-Metadaten enthalten oft Aufnahmeparameter wie Auflösung, Ausrichtung und Geolokation. Lass uns sehen, wie einige dieser Werte abgerufen werden können, wenn sie in den EXIF-Daten vorhanden sind.

Extrahieren von Aufnahmezeit, Auflösung und Ausrichtung

Python

from PIL.ExifTags import TAGS

# Überprüfung auf vorhandene EXIF-Daten
if exif_data is not None:
    # Initialisierung von Variablen zum Speichern der Werte
    date_time = None
    orientation = None
    resolution = None

    for tag_id, value in exif_data.items():
        tag = TAGS.get(tag_id, tag_id)

        # Extrahieren der Daten nach Tags
        if tag == "DateTime":
            date_time = value
        elif tag == "Orientation":
            orientation = value
        elif tag == "XResolution" or tag == "YResolution":
            resolution = value

    print("Aufnahmezeit und Datum:", date_time)
    print("Ausrichtung:", orientation)
    print("Auflösung:", resolution)
else:
    print("EXIF-Daten nicht gefunden.")

In diesem Beispiel werden Werte für DateTime (Aufnahmezeit und Datum), Orientation (Bildausrichtung) und XResolution/YResolution (Bildauflösung) extrahiert. Solche Daten sind oft nützlich für die Sortierung von Fotos oder das Erstellen von Berichten.

3. Hinzufügen und Bearbeiten von EXIF-Metadaten

Obwohl Pillow nur begrenzt das Hinzufügen von EXIF-Daten unterstützt, können die Metadaten beim Konvertieren von Bildern beibehalten werden, wenn sie im Originalbild vorhanden sind.

Beispiel: Speichern von Metadaten beim Konvertieren

Um EXIF-Daten beim Speichern eines Bildes beizubehalten, verwende den Parameter exif bei der Methode save().

Python

# Überprüfung auf EXIF-Daten und Speichern mit Metadaten
if exif_data is not None:
    exif_bytes = image.info['exif']
    image.save("converted_with_exif.jpg", exif=exif_bytes)
else:
    print("EXIF-Daten fehlen.")

Dieser Code speichert die EXIF-Daten beim Konvertieren eines Bildes in ein anderes Format, was es erlaubt, die ursprünglichen Aufnahmeparameter beizubehalten.

4. Beispiele:

Beispiel einer vollständigen Arbeit mit Formaten und EXIF-Metadaten

Abschließend betrachten wir ein Beispiel, das ein Bild konvertiert, optimiert und die EXIF-Daten speichert.

Python

from PIL import Image, ExifTags

# Bild öffnen
image = Image.open("original.jpg")

# Überprüfung auf vorhandene EXIF-Daten
exif_data = image._getexif()
if exif_data:
    exif_bytes = image.info['exif']  # EXIF-Daten für spätere Verwendung speichern
else:
    print("EXIF-Daten fehlen.")

# Bild in PNG konvertieren und optimieren
image_png = image.convert("RGB")
image_png.save("optimized_image.png", optimize=True)

# Konvertierung in JPEG mit Beibehaltung der EXIF-Daten und Qualitätsreduktion
if exif_data:
    image.save("compressed_with_exif.jpg", quality=85, exif=exif_bytes)
else:
    image.save("compressed_without_exif.jpg", quality=85)

Dieser Code umfasst:

  • Die Konvertierung eines Bildes in das PNG-Format mit Optimierung.
  • Die Konvertierung in das JPEG-Format mit Qualitätsreduktion zur Optimierung der Dateigröße.
  • Das Beibehalten von EXIF-Daten bei der Konvertierung, falls vorhanden.

Praktische Anwendungen der Arbeit mit Formaten und EXIF-Metadaten

  • Optimierung von Bildern für das Web: Durch die Konvertierung von Bildern in optimierte Formate wie JPEG oder PNG wird die Dateigröße verringert und die Ladezeit von Webseiten verbessert.
  • Extrahieren von Daten für Berichte: EXIF-Metadaten enthalten Informationen über Aufnahmeparameter, die für die Analyse von Fotos und Erstellung von Berichten nützlich sein können.
  • Beibehaltung der Metadaten bei der Bearbeitung: Beim Bearbeiten von Bildern können die ursprünglichen Aufnahmeparameter beibehalten werden, was für Archivierung und Dokumentation hilfreich ist.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION