Update EXIV2 TAGNAMES & VALUES section in manpage

Changes:
+ Add missing tag groups in Exif list and reformat
+ Update text explaining Exiv2 types
+ Add text explaining tag groups, multiple elements and date/time formats
+ Format closer to manpage standard
This commit is contained in:
postscript-dev 2021-08-26 12:55:56 +01:00
parent 166b0c3809
commit 51c8d698b2
No known key found for this signature in database
GPG Key ID: F3EC02A099292862

View File

@ -208,7 +208,7 @@ Where \fIfile\fP contains image metadata, optionally specified using a URL (http
\fItgt3\fP a | e | i | p | t | x | C | X | XX | -
all, Exif, IPTC, preview, thumbnail, XMP, ICC Profile, SideCar, Raw XMP, stdin/out
\fItype\fP An Exif, IPTC or XMP tag type (e.g., xmpText). See \fBEXIV2 TAGNAMES AND VALUES\fP
\fItype\fP An Exif, IPTC or XMP tag type (e.g., xmpText). See \fBExif/IPTC/XMP types\fP
\fI+-n\fP The amount to change in the date (e.g., -3). Default is \fB+\fP when \fB+\fP/\fB-\fP are missing
@ -742,71 +742,233 @@ Empty lines and lines starting with \fB#\fP in a command file are
ignored (comments). Remaining lines are commands as described above.
.br
.ne 40
.SH EXIV2 TAGNAMES AND VALUES
Exiv2 displays metadata tags and values.
.SH EXIV2 GROUPS, TYPES AND VALUES
Exiv2 supports Exif 2.32, Adobe XMP 4.4.0 by default, although can be built with newer versions of the SDK, and many manufacturer's MakerNotes.
.SS Exiv2 tags
Exiv2 metadata keys are made up of a triplet of 'Family.Group.Tagname' (e.g., Exif.Image.Model). The following groups are defined for the Exif family:
.sp 1
The tag is a triplet of Family.Group.Tagname. The following groups are defined for the family Exif:
.TS
l l l l l l.
GPSInfo Canon Nikon1 NikonMe OlympusFe8 SonyMisc2b
Image CanonCf Nikon2 NikonPc OlympusFe9 SonyMisc3c
Image2 CanonCs Nikon3 NikonPreview OlympusFi SonyMinolta
Image3 CanonFi NikonAFT NikonSi01xx OlympusIp SonySInfo1
Iop CanonPa NikonAf NikonSi02xx OlympusRd
MakerNote CanonPi NikonAf NikonSiD300a OlympusRd2 Samsung2
MpfInfo CanonPr NikonAf2 NikonSiD300b OlympusRi SamsungPictureWizard
Photo CanonSi NikonAf22 NikonSiD40 SamsungPreview
SubImage1 CanonTi NikonCb1 NikonSiD80 Sigma
SubImage2 NikonCb2 NikonVr
SubImage3 Casio NikonCb2a NikonWt Sony1
SubImage4 Casio2 NikonCb2b Sony1Cs
SubImage5 NikonCb3 Olympus Sony1Cs2
SubImage6 Minolta NikonCb4 Olympus2 Sony1MltCs7D
SubImage7 MinoltaCs5D NikonFi OlympusCs Sony1MltCsA100
SubImage8 MinoltaCs7D NikonFl1 OlympusEq Sony1MltCsNew
SubImage9 MinoltaCsNew NikonFl2 OlympusFe1 Sony1MltCsOld
SubThumb1 MinoltaCsOld NikonFl3 OlympusFe2 Sony2
Thumbnail NikonIi OlympusFe3 Sony2Cs
Panasonic NikonLd1 OlympusFe4 Sony2Cs2
Pentax PanasonicRaw NikonLd2 OlympusFe5 Sony2010e
PentaxDng NikonLd3 OlympusFe6 Sony2Fp
Fujifilm NikonLd4 OlympusFe7 SonyMisc1
.TE
.sp 1
A full list of built-in Exif, IPTC and XMP tags is available online at
\fIhttps://www.exiv2.org/metadata.html\fP. To query Exiv2 Groups and Tagnames,
a sample program called \fItaglist\fP is provided (see
\fIhttps://github.com/Exiv2/exiv2/blob/main/README-SAMPLES.md\fP), which
can be built from source (see \fIhttps://github.com/Exiv2/exiv2/blob/main/README.md\fP) or
downloaded from \fIhttps://www.exiv2.org/download.html\fP.
.sp 1
For the Exif, IPTC and XMP groups:
.sp 1
.IP \(bu
The same tags that are available in Exif's Image group (e.g., \fIExif.Image.XResolution\fP),
are also available in Exif's Thumbnail, Image(2|3), SubImage(1-9) and
SubThumb1 groups, (e.g., \fIExif.Thumbnail.XResolution\fP).
.sp 1
.IP \(bu
Many camera manufacturer tags are available and are accessed as different
Exif groups, using the manufacturer's name as a prefix (e.g., CanonCs is the
Camera Settings for a Canon camera). Groups called the manufacturer name
plus number, access the main tags in different file formats (e.g., Sony1 is for
JPEGs, Sony2 is for others such as TIFF and ARW). Groups are available for
use, depending upon which camera manufacturer and model captured the photo.
Supporting the large number of tags for all the different manufacturers
is an ongoing task, only partial support is available. The full unprocessed
makernotes data is available in Exif.Photo.MakerNote.
.sp 1
.IP \(bu
Every Exif tag and IPTC dataset has a tag number (16 bit, 2 byte integer),
which is unique within a Group (to display, see \fB--Print\fP \fIx\fP).
.sp 1
.IP \(bu
Some of the Exif tags and IPTC datasets are mirrored in the XMP specification
(see \fIhttps://www.exiv2.org/metadata.html\fP).
.sp 1
.IP \(bu
The XMP specification is flexible and allows new custom Groups and
Tagnames to be added (see \fBCommand format\fP).
.sp 1
For example, the 'cm2e' Group has been added, which has 'Father' and 'Family'
Tagnames. Aditionally, a 'Family' tag has been added to the built-in 'dc' Group:
.sp 1
.nf
GPSInfo Canon Fujifilm NikonMe OlympusFe7 SonyMisc2b
Image CanonCf NikonPc OlympusFe9 SonyMisc3c
Image2 CanonCs Nikon1 NikonPreview OlympusFi SonyMinolta
Image3 CanonFi Nikon2 NikonSi01xx OlympusIp SonySInfo1
Iop CanonPa Nikon3 NikonSi02xx OlympusRd
MakerNote CanonPi NikonAFT NikonSiD300a OlympusRd2 Samsung2
MpfInfo CanonPr NikonAf NikonSiD300b OlympusRi SamsungPictureWizard
Photo CanonSi NikonAf2 NikonSiD40 SamsungPreview
SubImage1 CanonTi NikonAf22 NikonSiD80 Sigma
SubImage2 NikonCb1 NikonVr
SubImage3 Casio NikonCb2 NikonWt Sony1
SubImage4 Casio2 NikonCb2a Sony1Cs
SubImage5 NikonCb3 Olympus Sony1Cs2
SubImage6 Minolta NikonCb4 Olympus2 Sony1MltCs7D
SubImage7 MinoltaCs5D NikonFi OlympusCs Sony1MltCsA100
SubImage8 MinoltaCs7D NikonFl1 OlympusEq Sony1MltCsNew
SubImage9 MinoltaCsNew NikonFl2 OlympusFe1 Sony1MltCsOld
SubThumb1 MinoltaCsOld NikonFl3 OlympusFe2 Sony2
Thumbnail NikonIi OlympusFe3 Sony2Cs
Panasonic NikonLd1 OlympusFe4 Sony2Cs2
Pentax PanasonicRaw NikonLd2 OlympusFe5 Sony2Fp
PentaxDng NikonLd3 OlympusFe6 SonyMisc1
\& $ curl --silent -O https://clanmills.com/Stonehenge.jpg
\& $ exiv2 --print x Stonehenge.jpg
\& Xmp.xmp.Rating XmpText 1 0
\& Xmp.xmp.ModifyDate XmpText 25 2015-07-16T20:25:28+01:00
\& Xmp.cm2e.Father XmpText 11 Robin Mills
\& Xmp.cm2e.Family XmpBag 0
\& Xmp.dc.description LangAlt 1 lang="x-default" Classic View
\& Xmp.dc.Family XmpBag 1 Robin
.fi
.IP \(bu
Further information on Exiv2 groups can be found on the Exiv2 wiki: \fIhttps://github.com/Exiv2/exiv2/wiki\fP
.sp 1
Exiv2 supports Exif 2.2 Standard Tags. Exiv2 also supports reading and writing manufacturer's MakerNote. The information in Exif.Photo.MakerNote is encoded as manufacturer's sub-records. For example, CanonCs are Camera Settings, NikonAf are Nikon Auto Focus records, NikonCb are Nikon Color Balance Records. Every tag is defined by a unique tagId (16 bit integer) which is unique within a Group.
.sp
You can query Exiv2 groups and tags with the sample program taglist which is documented in \fIhttps://github.com/Exiv2/exiv2/blob/main/README-SAMPLES.md\fP
.sp
.ne 20
Exif Metadata values are defined in the Exif Standard. All data is an array of data elements. The Count defines the number elements in the array. All elements in an array have the same type.
.sp 1
.SS Exif/IPTC/XMP types
.nf
Type Explanation
1 BYTE An 8-bit unsigned integer.
2 ASCII 7-bit ASCII. NUL terminated.
3 SHORT A 16-bit (2-byte) unsigned integer.
4 LONG A 32-bit (4-byte) unsigned integer
5 RATIONAL Two LONGs. Numerator, denominator.
7 UNDEFINED An 8-bit byte.
8 SSHORT A 16-bit (2-byte) signed integer.
9 SLONG A 32-bit (4-byte) signed integer.
10 SRATIONAL Two SLONGs. Numerator, denominator.
.fi
.sp
The printing flag t = translated and is intended for human use. Scripts should never use translated values as they are localised and the format may change as Exiv2 evolves. The printing flag v reports the values recorded in the metadata and should be used by scripts.
Each tag uses a specific type to store the value, with all elements in any array having the same type. Available types for the
different 'Family' categories are:
.sp 1
.TP
\fBExif\fI
.TS
lB lB lB lB
_ _ _ _
l l l l.
Type Format Element Comment
Short A 16-bit (2-byte) unsigned integer Single
Long A 32-bit (4-byte) unsigned integer Single
Rational Two Long types. Numerator and denominator Single Use as X/Y (e.g., "31/1" is 31.0)
Byte A string of 8-bit unsigned integers Single
SShort A 16-bit (2-byte) signed integer Single
SLong A 32-bit (4-byte) signed integer Single
SRational Two SLong types. Numerator and denominator Single Use as [ + | - ]X/Y (e.g., "-31/1" is -31.0)
SByte A string of 8-bit signed integers Single
Float Signed single precision (4-byte) IEEE format Single Use as a signed decimal (e.g., "-0.5" is -0.5)
Double Signed double precision (8-byte) IEEE format Single Use as a signed decimal (e.g., "-0.5" is -0.5)
Ascii A string of 7-bit ASCII. NULL terminated Single Use as a string (e.g., "Value")
Comment A string of 7-bit ASCII. NULL terminated Single Use as a string (e.g., "Value")
Undefined A string of 8-bit bytes Single Use as a string (e.g., "Value")
.TE
.sp 1
.TP
\fBIPTC\fP
.TS
lB lB lB lB
_ _ _ _
l l l l.
Type Format Element Comment
String A string of ASCII Single
Short A 16-bit (2-byte) unsigned integer Single
Date A string of ASCII (8 bytes) Single See \fBDate/Time formats\fP
Time A string of ASCII (11 bytes) Single See \fBDate/Time formats\fP
Undefined A string of 8-bit bytes Single Use as a string (e.g., "Value")
.TE
.sp 1
.TP
\fBXMP\fP
.TS
lB lB lB lB
_ _ _ _
l l l l.
Type Format Element Comment
LangAlt A string of text Multi Similar to XmpAlt. Alternative text for different languages, e.g., 'lang="x-default" Black, lang="fr-FR" Noir' (see \fBMultiple elements\fP and \fBCommand format\fP)
XmpAlt A string of text Multi An ordered array, any default value is first
XmpBag A string of text Multi An unordered array (e.g., 3 values, "Red, Yellow, Green"), see \fBMultiple elements\fP and \fBCommand format\fP
XmpSeq A string of text Multi An ordered array (e.g., 3 values, "Gold, Silver, Bronze"), see \fBMultiple elements\fP and \fBCommand format\fP
XmpText A string of text Single
.TE
.sp 1
.SS
\fBMultiple elements\fP
Some IPTC datasets and XMP properties allow multiple elements to be stored, although they both do this in different ways.
.TP
\fBIPTC\fP
.sp 1
IPTC datasets marked as repeatable, can have multiple entries with the
same key (Family.Group.Tagname) in the image metadata (for supported datasets,
see \fIhttps://www.exiv2.org/iptc.html\fP, column R).
For example, a file containing three Iptc.Application2.Subject values:
.nf
\& $ exiv2 --grep Application2 Stonehenge_with_extra_data.jpg
\& Iptc.Application2.RecordVersion Short 1 4
\& Iptc.Application2.Caption String 12 Monument
\& Iptc.Application2.Subject String 10 Stonehenge
\& Iptc.Application2.Subject String 6 Cloudy
\& Iptc.Application2.Subject String 5 Grass
.fi
.TP
\fBXMP\fP
.sp 1
XMP multiple values are grouped together within the same tag, using ", " as
a separator (see \fBExif/IPTC/XMP types\fP for supported types). If a default
value exists for a LangAlt or XmpAlt tag, then this is the first item listed.
For example, a file containing two Xmp.dc.description values (for format, see
\fBCommand format\fP) and three Xmp.dc.subject values:
.nf
\& $ exiv2 --grep description --grep subject Stonehenge_with_extra_data.jpg
\& Xmp.dc.description LangAlt 1 lang="x-default" Monument, lang="de-DE" das Monument
\& Xmp.dc.subject XmpBag 3 Stonehenge, Cloudy, Grass
.fi
.ne 8
.fi
.SS Exif DateTime
.SS Date/Time formats
.fi
The times and dates are stored using different formats in image metadata.
.TP
\fBExif\fP
.sp 1
An Exif DateTime string is stored as 20 ascii bytes (including trailing NULL) in the format:
.RS
.IP
YYYY:MM:DD HH:mm:SS
.sp 1
YYYY:MM:DD HH:MM:SS
.RE
.IP
where YYYY:MM:DD is the year, month and day and HH:mm:SS is the hour, minute
and second (e.g., "2010:09:15 08:45:21" is 08:45:21 on 15-Aug-10).
.IP
The options \fB--timestamp\fP and \fB--Timestamp\fP will accept files
in which the Date part, has been incorrectly stored as YYYY-MM-DD.
.TP
\fBIPTC\fP
.sp 1
The \fBexiv2\fP options \fB--timestamp\fP and \fB--Timestamp\fP will accept files
in which the Date has been incorrectly stored as YYYY-MM-DD.
The option \fB--adjust\fP \fItime\fP enables the user to adjust the DateTime in the file and applies
the YYYY:MM:DD HH:MM:SS standard.
An IPTC 'Date' type is stored in the format:
.sp 1
.RS
.IP
YYYYMMDD
.RE
.IP
where YYYYMMDD is the year, month and day (e.g., "20100915" is 15-Aug-10).
.sp 1
An IPTC 'Time' type is stored in the format:
.RS
.IP
HHMMSScHHMM
.RE
.IP
where HHMMSS refers to local time's hour, minutes and seconds and, HHMM
refers to hours and minutes with c being ahead (+) or behind (-) Universal
Coordinated Time (UCT) as described in ISO 8601 (e.g., 084515+0100 is
08:45:15, which is +1 hour different from UCT).
.TP
\fBMakernote tags\fP
.sp 1
There is no one single format. Different camera manufacturers use different
formats, even within their own sets of tags. Some tags use encoded data
that does not conform to any official format.
.ne 40
.SH CONFIGURATION FILE
\fBexiv2\fP can read an optional configuration file, which allows
@ -987,7 +1149,10 @@ The Exiv2 project is released under the GNU GPLv2 license: \fIhttps://github.com
Exiv2 'modify' command examples: \fIhttps://exiv2.org/sample.html#modify\fP
All Exiv2 tags, listing the \fIkey\fP and default \fItype\fP: \fIhttps://exiv2.org/metadata.html\fP
Exiv2 README.md: \fIhttps://github.com/Exiv2/exiv2/blob/main/README.md\fP
Exiv2 sample programs: \fIhttps://github.com/Exiv2/exiv2/blob/main/README-SAMPLES.md\fP
Exiv2 downloads: \fIhttps://www.exiv2.org/download.html\fP
Exiv2 wiki: \fIhttps://github.com/Exiv2/exiv2/wiki\fP
APEX Exposure values: \fIhttps://en.wikipedia.org/wiki/APEX_system\fP
International Language Codes: \fIhttps://www.ietf.org/rfc/rfc3066.txt\fP
Windows INI format: \fIhttps://en.wikipedia.org/wiki/INI_file\fP