EXIF-Betrachter
EXIF-Metadaten aus JPEG-Bildern extrahieren und anzeigen: Kamera, Datum, GPS und mehr.
HĂ€ufig gestellte Fragen
Code-Implementierung
# Read EXIF metadata from a JPEG using Pillow + piexif
# pip install Pillow piexif
from PIL import Image
import piexif
import json
def read_exif(path: str) -> dict:
img = Image.open(path)
exif_bytes = img.info.get("exif", b"")
if not exif_bytes:
return {}
exif_dict = piexif.load(exif_bytes)
result = {}
tag_names = {**piexif.ImageIFD.__dict__, **piexif.ExifIFD.__dict__, **piexif.GPSIFD.__dict__}
tag_names = {v: k for k, v in tag_names.items() if isinstance(v, int)}
for ifd_name in ("0th", "Exif", "GPS", "1st"):
for tag, value in exif_dict.get(ifd_name, {}).items():
name = tag_names.get(tag, f"Tag_{tag}")
if isinstance(value, bytes):
try:
value = value.decode("utf-8").rstrip("\x00")
except UnicodeDecodeError:
value = value.hex()
result[name] = value
return result
exif = read_exif("photo.jpg")
for k, v in exif.items():
print(f"{k}: {v}")
# GPS coordinates helper
def dms_to_decimal(dms, ref):
d, m, s = [x[0] / x[1] for x in dms]
decimal = d + m / 60 + s / 3600
if ref in ("S", "W"):
decimal = -decimal
return round(decimal, 6)
if "GPSLatitude" in exif and "GPSLongitude" in exif:
lat = dms_to_decimal(exif["GPSLatitude"], exif.get("GPSLatitudeRef", "N"))
lon = dms_to_decimal(exif["GPSLongitude"], exif.get("GPSLongitudeRef", "E"))
print(f"GPS: {lat}, {lon}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.