This page is a work in progress, and will be used to explain some details of ExifTool's inner workings.
Below is a diagram showing the flow of information for the exiftool application. Indicated outside the boxes on the diagram are some command-line options associated with the various stages of processing. All of these options are directly associated with options or function calls available via the API (Application Programming Interface), with the exception of the output text formatting which is handled at the application level.
The information flow is separated into two distinct modes: 1) Reading or
extracting information, and 2) Writing or editing. The application runs in
read mode by default, but switches to write mode if a new value is
assigned to any tag (via "-TAG=VALUE
", "-tagsFromFile
"
or "-geotag
" on the command line).
When ExifTool reads or writes the value of a tag, there are 3 separate conversions applied to each value, resulting in 4 different levels for the value of each tag. By default, users interact only with the human-readable ("PrintConv") value, but other levels are exposed through various exiftool options:
-lang
option is used to specify the language for this conversion.-n
option is used, or for individual
tags by suffixing the tag name with a #
character.-v
option.-v3
option, or by using the -htmlDump
feature. Note that this value is
not related to the -b
(-binary
) option, which actually
returns the "ValueConv" value and is used for tags where this value can not be
presented in a simple text format.Below are some examples of these different values for a few tags:
Tag 3. PrintConv 2. ValueConv 1. Raw 0. Binary Orientation Horizontal (normal) 1 1 00 01GPSLatitude 45 deg 20' 11.00" 45.3363888888889 45 20 11
(45/1 20/1 11/1) 00 00 00 2d 00 00 00 01
00 00 00 14 00 00 00 01
00 00 00 0b 00 00 00 01ExposureTime 1/30 0.03333333333 0.03333333333
(1/30) 00 00 00 01 00 00 00 1eShutterSpeedValue 1/30 0.0333333334629176 4.90689059
(19868/4049) 00 00 4d 9c 00 00 0f d1
In the design of exiftool, there have been a number of underlying philosophies which have helped to influence the overall development: