ImgArchive provides a simple Exif reader that can read Exif data out of JPGs and possibly other image types. However Exif data may be present in images that the internal reader may not be able to decode. There are external tools that may able to decode the Exif information is images such as ExifTool by Phil Harvey and Exiv2 project (www.exiv2.org).
These Tools are actively supported. As new image formats come on to the market by the camera manufactures tools like Exiftool will add support for these formats. ImgArchive supports these tools by containing hooks into these tools that are configured by setting properties in the configuration file.
Supported tools
ImgArchive supports three external tools:
Exiftool
Exiv2
Python Image Library
Adding an exif tool
Exif Tools like Exiftool will read an image file and usually do one of two things (or both), One create a data file containing the Exif information or Two the output directly to the terminal screen. In the first case ImgArchive will read the resulting data file extracting the information as needed. In the second case, will read the output extracting the information as it is presented. The information is normally in name/value pairs, one pair per line. The name defines the property that describes the the value.
For example Aperture : 5.6
The name “Aperture” is short for “camera aperture”, the value 5.6 is the stop number.
Typically the file a tool like Exiftool generates contains a large amount of information not relevant to the archive.
To selectively extract required data a map file needs to be used. This map file is used to match property names and only extract the information that matches a name in the map. ImgArchive provides a set of keyword names to be used in a map file. so the Exif Tool property name can be matched with the ImgArchive property name. Most of the time the Exif Tool property name and the ImgArchive property name are the same. However this may not always be the case for example. In exiftool the camera aperture has a property name of:
Aperture
However the ImgArchive property name is:
FNumber
So in order to connect F stops in ImgArchive to the Exiftool data file you will need the line:
Aperture = FNumber
In the mapping file. When ImgArchive reads the map file it will associate the keyword Aperture in Exiftool data file with the keyword “FNumber” in ImgArchive.
Then when ImgArchive reads the Exif data file generated by the Exiftool, when it reads “Aperture” the “value” associated will be stored under “FNumber” in ImgArchive.
So that you can test that the mappings are correct, ImgArchive can be run in “detail” mode with archiving turned off. If you then have a test image with Exit data in it and run ImgArchive. ImgArchive will not put the image in the archive but do everything up to archiving. If you then look in the log file it will contain a list of all the keyword matches and the values associated with the matches from this, you can determine if the map file is working correctly.
An installation of ImgArchive will have a default map file for ExifTool.exe. This may be modified if Exiftool changes its keywords or can be used to create a base file for a new tool if you want to replace Exiftool. A List of the keywords is included in Appendix B along with a description of their meaning. Some values are required to ensure the correct operation of ImgArchive these are labelled if obligatory.
Setting up the program hook
Example configuration file
[External Exif Tool]
ExifCommandLine=[source]
ExifFileDelim=:
ExifMapFile=exif.ini
ExifMapPath=C:\ProgramData\IDK-Software\ImgArchive\config
ExifTool=exiftool.exe
Defaults
The default map path is:
C:\ProgramData\IDK-Software\ImgArchive\config