đŸ› ïžToolsShed

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.