Python:Images: Difference between revisions

From wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 9: Line 9:
PyExifTool is not available as a Debian package. Install it in a  [[Python#Virtual_environment]]
PyExifTool is not available as a Debian package. Install it in a  [[Python#Virtual_environment]]


;from exiftool import ExfiToolHelper as et
;from exiftool import ExfiToolHelper
:ExifToolHelper is a wrapper for ExifTool with some helper functionality.
:ExifToolHelper is a wrapper for ExifTool with some helper functionality.


Line 25: Line 25:
             print(f"ifd {ifd}")
             print(f"ifd {ifd}")


     # Set IPTC:Keywords
     # Set IPTC:Keywords (not show by Debian eog (Afbeeldingsweergave in Dutch))
     with ExifToolHelper() as et:
     with ExifToolHelper() as et:
         et.set_tags([filename],
         et.set_tags([filename],

Revision as of 20:09, 14 July 2025


Images can have meta-data embedded. Most used is Exif[1], other formats are IPT[2] and XMP[3].

It appears that exiftool is the way to go. PyExifTool is a python wrapper for it.

In Debian exiftool is provided by libimage-exiftool-perl. That is automatically selected when you apt install exiftool.

PyExifTool is not available as a Debian package. Install it in a Python#Virtual_environment

from exiftool import ExfiToolHelper
ExifToolHelper is a wrapper for ExifTool with some helper functionality.
from exiftool import ExfiToolHelper
import json

with ExifToolHelper() as et:
    metadata = et.get_metadata(filename)
    for ifd in metadata:
        if isinstance(ifd, dict):
            for tag, value in ifd.items():
                print(f"{tag}: {value}")
        else:
            print(f"ifd {ifd}")

    # Set IPTC:Keywords (not show by Debian eog (Afbeeldingsweergave in Dutch))
    with ExifToolHelper() as et:
        et.set_tags([filename],
            tags={"Keywords": ["sunny", "nice day", "cool", "awesome"]}
        )

    # Set XMP:Subject
    with ExifToolHelper() as et:
        et.set_tags([filename],
            tags={"Subject": ["Holiday", "Spain"]}
        )