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.
# 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
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()
.
# Ü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.
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.
GO TO FULL VERSION