0012219: Expand ImageMetadata gramplet to support XMP and IPTC metadata tags

(Note: This is a cross-post of Mantis Issues 12219 - My attempt in Mantis to show a table didn’t work. So I am adding it here.)

The current ImageMetadata gramplet only displays EXIF metadata tags. Third-party image editing/management softwares are inconsistent in the metadata tags they use to stored descriptions and other metadata. These softwares may write descriptions of the people/events in image in metadata tags that Gramps does currently support thus some information may be hidden from Gramps users.

Exiv2 supports XMP and IPTC tags.

This request suggests:

  • Expanding the metadata tags supported by the gramplet
  • Display the detailed metadata fieldname rather than the friendly names. Friendly names can be duplicated across fields and may result in the belief there is a bug in the gramplet
  • A new grouping of metadata tags so that like-tags are grouped together
  • Changing the gramplet presentation to a list view (to support better sorting)
  • Displaying a thumbnail image of any namesd regions embedded in the image.

(Note:. This change is independent of the PR I have made for the Phototagging Gramplet)

Proposed Metadata Grouping

Grouping Proposed Metadata Current Metdata
DESCRIPTION Exif.Image.ImageDescription
Exif.Image.XPSubject
Exif.Image.XPComment
Exif.Image.Rating
Xmp.dc.title
Xmp.dc.description
Xmp.dc.subject
Xmp.acdsee.caption
Xmp.acdsee.notes
Iptc.Application2.Caption
Exif.Photo.UserComment
Exif.Image.ImageDescription
Exif.Image.XPSubject
Exif.Image.XPComment
Exif.Image.XPKeywords
Exif.Image.Rating
Exif.Image.Artist
Exif.Image.Copyright
Exif.Photo.DateTimeOriginal
Exif.Photo.DateTimeDigitized
Exif.Image.DateTime
Exif.Image.TimeZoneOffset
DATE (new grouping) Exif.Photo.DateTimeOriginal
Exif.Photo.DateTimeDigitized
Exif.Image.DateTime
Exif.Image.TimeZoneOffset
PEOPLE
(new grouping)
Xmp.mwg-rs.Regions/mwg-rs:RegionList[x]/mwg-rs:Name (display thumbnail)
Xmp.iptcExt.PersonInImage
GPS Exif.GPSInfo.GPSLatitude
Exif.GPSInfo.GPSLatitudeRef
Exif.GPSInfo.GPSLongitude
Exif.GPSInfo.GPSLongitudeRef
Exif.GPSInfo.GPSAltitude
Exif.GPSInfo.GPSAltitudeRef
Exif.GPSInfo.GPSTimeStamp
Exif.GPSInfo.GPSSatellites
Exif.GPSInfo.GPSLatitude
Exif.GPSInfo.GPSLatitudeRef
Exif.GPSInfo.GPSLongitude
Exif.GPSInfo.GPSLongitudeRef
Exif.GPSInfo.GPSAltitude
Exif.GPSInfo.GPSAltitudeRef
Exif.GPSInfo.GPSTimeStamp
Exif.GPSInfo.GPSSatellites
TAGGING
(new grouping)
Exif.Image.XPKeywords
Xmp.mwg-kw.Hierarchy
Xmp.mwg-kw.Keywords
Xmp.digiKam.TagsList
Xmp.MicrosoftPhoto.LastKeywordXMP
Xmp.MicrosoftPhoto.LastKeywordIPTC
Xmp.lr.hierarchicalSubject
Xmp.acdsee.categories
IMAGE
(no changes)
Exif.Image.DocumentName
Exif.Photo.PixelXDimension
Exif.Photo.PixelYDimension
Exif.Image.XResolution
Exif.Image.ResolutionUnit
Exif.Image.YResolution
Exif.Image.ResolutionUnit
Exif.Image.Orientation
Exif.Photo.ColorSpace
Exif.Image.YCbCrPositioning
Exif.Photo.ComponentsConfiguration
Exif.Image.Compression
Exif.Photo.CompressedBitsPerPixel
Exif.Image.PhotometricInterpretation
Exif.Image.DocumentName
Exif.Photo.PixelXDimension
Exif.Photo.PixelYDimension
Exif.Image.XResolution
Exif.Image.ResolutionUnit
Exif.Image.YResolution
Exif.Image.ResolutionUnit
Exif.Image.Orientation
Exif.Photo.ColorSpace
Exif.Image.YCbCrPositioning
Exif.Photo.ComponentsConfiguration
Exif.Image.Compression
Exif.Photo.CompressedBitsPerPixel
Exif.Image.PhotometricInterpretation
RIGHTS
(new grouping)
Exif.Image.Copyright
Exif.Image.Artist
none
CAMERA
(no changes)
Exif.Image.Make
Exif.Image.Model
Exif.Photo.FNumber
Exif.Photo.ExposureTime
Exif.Photo.ISOSpeedRatings
Exif.Photo.FocalLength
Exif.Photo.FocalLengthIn35mmFilm
Exif.Photo.MaxApertureValue
Exif.Photo.MeteringMode
Exif.Photo.ExposureProgram
Exif.Photo.ExposureBiasValue
Exif.Photo.Flash
Exif.Image.FlashEnergy
Exif.Image.SelfTimerMode
Exif.Image.SubjectDistance
Exif.Photo.Contrast
Exif.Photo.LightSource
Exif.Photo.Saturation
Exif.Photo.Sharpness
Exif.Photo.WhiteBalance
Exif.Photo.DigitalZoomRation
Exif.Image.Make
Exif.Image.Model
Exif.Photo.FNumber
Exif.Photo.ExposureTime
Exif.Photo.ISOSpeedRatings
Exif.Photo.FocalLength
Exif.Photo.FocalLengthIn35mmFilm
Exif.Photo.MaxApertureValue
Exif.Photo.MeteringMode
Exif.Photo.ExposureProgram
Exif.Photo.ExposureBiasValue
Exif.Photo.Flash
Exif.Image.FlashEnergy
Exif.Image.SelfTimerMode
Exif.Image.SubjectDistance
Exif.Photo.Contrast
Exif.Photo.LightSource
Exif.Photo.Saturation
Exif.Photo.Sharpness
Exif.Photo.WhiteBalance
Exif.Photo.DigitalZoomRation
ADVANCED
(no changes)
Exif.Image.Software
Exif.Photo.ImageUniqueID
Exif.Image.CameraSerialNumber
Exif.Photo.ExifVersion
Exif.Photo.FlashpixVersion
Exif.Image.ExifTag
Exif.Image.GPSTag
Exif.Image.BatteryLevel
Exif.Image.Software
Exif.Photo.ImageUniqueID
Exif.Image.CameraSerialNumber
Exif.Photo.ExifVersion
Exif.Photo.FlashpixVersion
Exif.Image.ExifTag
Exif.Image.GPSTag
Exif.Image.BatteryLevel

Did you look a at the QGIS open source project. (I have not yet.)

But I just skimmed a tutorial that talks about leveraging QGIS to link photos to a map layer… including Frame Of View cones as map markers.

It may have practical applications for some metadata you did not include above. (Including the pitch & rotation axis to supplement the compass direction & GPS coordinates.)

I have not looked at (or heard of) the QGIS project. Most images I am working with pre-date smart phones.

Please, if there are tags that should be exposed in this view let me know. I focused only on tags where it looked like names or other pieces of info would be hiding.

The lists of metadata that Exiv2 supports are found here: https://www.exiv2.org/metadata.html

The alternative approach to this gramplet is to simply return any and all metadata that are in an image. I do wonder if this would give too much information that is not practical to most Gramps users.

There are a lot of IPTC/XMP data that can be excluded, like Vendor data and format specific metadata for the format. Same goes with any and all Editor metadata…

I think the easiest would be to just create a customization feature where each user could add the fields they needed, and that any field set would be handled as attributes in Gramps.
There could be a few default “templates”, and I’m sure developers for Digikam or Darktable would share their experience if anyone asked them, regarding “common” fields for a template…