-composite:all different output than -composite:datetimeoriginal

Started by johnrellis, July 07, 2019, 05:25:09 PM

Previous topic - Next topic

johnrellis

Here's a very confusing puzzle that took a long time to figure out: exiftool -composite:all shows Date/Time Original, while exiftool -composite:datetimeoriginal shows nothing.


$ exiftool -a -G -composite:all c.jpg
[Composite]     Date/Time Created               : 2018:01:02 03:04:05
[Composite]     Image Size                      : 2057x2969
[Composite]     Megapixels                      : 6.1
[Composite]     Shutter Speed                   : 1/2000
[Composite]     Date/Time Original              : 2017:01:02 03:04:05.002

$ exiftool -a -G -composite:datetimeoriginal c.jpg
$

$ exiftool -ver
11.54


This is caused by the Composite tag SubSecDateTimeOriginal, whose description is "Date/Time Original".  You can see that by using -s:


$ exiftool -a -G -s -composite:all c.jpg
...
[Composite]     SubSecDateTimeOriginal          : 2017:01:02 03:04:05.002


The tag doesn't follow the convention that the tag name is the description with the punctuation removed.

I think it would be less confusing if SubSecDateTimeOriginal were renamed to DateTimeOriginal, so that -composite:datetimeoriginal would give the expected results in the very common use-case of examining EXIF from camera photos.

According to the Composite Tags page, there are already two other definitions for Composite:DateTimeOriginal, and I don't know how this third would interact with those. But those two other definitions are for use cases that are much less common, I think (for IPTC and ID3).

Phil Harvey

Thanks for this suggestion.  I agree it is confusing, but I wanted to give the tag a different name so that it could be accessed separately from the other tag(s).  It is maybe the description that should be changed, but I would wait until more people complain before considering a change like this.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).