Python:Images: Difference between revisions

From wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 11: Line 11:
;from exiftool import ExfiToolHelper
;from exiftool import ExfiToolHelper
:ExifToolHelper is a wrapper for ExifTool with some helper functionality.
:ExifToolHelper is a wrapper for ExifTool with some helper functionality.
;et = ExifToolHelper()
:Instantiate an ExifToolHelper object. It opens an instance of exiftool in batch mode. Exiftool in closed when the object is terminated
;et.terminate()
:Destroying the ExifToolHelper object terminates the exiftool instance.
;<nowiki>with ExifToolHelper() as et:</nowiki>
:Auto terminate the ExifToolHelper object at the end of the block


<syntaxhighlight lang=python>
<syntaxhighlight lang=python>
Line 17: Line 23:


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


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


    # Set XMP:Subject
# Set XMP:Subject (XMP is newer than IPTC, I prefer to use this)
    with ExifToolHelper() as et:
with ExifToolHelper() as et:
        et.set_tags([filename],
    et.set_tags([filename], tags={"Subject": ["Holiday", "Spain"]})
            tags={"Subject": ["Holiday", "Spain"]}
        )
</syntaxhighlight>
</syntaxhighlight>

Revision as of 10:55, 18 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.
et = ExifToolHelper()
Instantiate an ExifToolHelper object. It opens an instance of exiftool in batch mode. Exiftool in closed when the object is terminated
et.terminate()
Destroying the ExifToolHelper object terminates the exiftool instance.
with ExifToolHelper() as et:
Auto terminate the ExifToolHelper object at the end of the block
from exiftool import ExfiToolHelper
import json

with ExifToolHelper() as et:
    metadatalist = et.get_metadata(filename)
    for metadata in metadatalist:
        for tag, value in metadata.items():
            print(f"{tag}: {value}")

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

# Set XMP:Subject  (XMP is newer than IPTC, I prefer to use this)
with ExifToolHelper() as et:
    et.set_tags([filename], tags={"Subject": ["Holiday", "Spain"]})