From 52fb1e93f9c342ca20a93e1f5bbabcf21c06bc6a Mon Sep 17 00:00:00 2001 From: Jacob Boerema Date: Fri, 26 May 2023 12:40:58 -0400 Subject: [PATCH] libgimpbase: issue #1561 update Exif.Photo.PixelX/YDimension Some images have Exif.Photo.PixelXDimension and Exif.Photo.PixelYDimension metadata tags in addition to Exif.Image.ImageWidth and Exif.Image.ImageHeight (mainly tiff images). So far, we were not updating these optional tags, meaning they could get out-of-sync with the actual dimensions when resizing and then exporting the image. Since these tags are non essential, we will only update them if they are already present. --- libgimpbase/gimpmetadata.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libgimpbase/gimpmetadata.c b/libgimpbase/gimpmetadata.c index 1605b306c2..e9aa59e9e5 100644 --- a/libgimpbase/gimpmetadata.c +++ b/libgimpbase/gimpmetadata.c @@ -1461,6 +1461,8 @@ gimp_metadata_set_from_xmp (GimpMetadata *metadata, * @height: Height in pixels * * Sets Exif.Image.ImageWidth and Exif.Image.ImageLength on @metadata. + * If already present, also sets Exif.Photo.PixelXDimension and + * Exif.Photo.PixelYDimension. * * Since: 2.10 */ @@ -1476,10 +1478,24 @@ gimp_metadata_set_pixel_size (GimpMetadata *metadata, g_snprintf (buffer, sizeof (buffer), "%d", width); gexiv2_metadata_try_set_tag_string (GEXIV2_METADATA (metadata), "Exif.Image.ImageWidth", buffer, NULL); + if (gexiv2_metadata_try_has_tag (GEXIV2_METADATA (metadata), + "Exif.Photo.PixelXDimension", NULL)) + { + gexiv2_metadata_try_set_tag_string (GEXIV2_METADATA (metadata), + "Exif.Photo.PixelXDimension", + buffer, NULL); + } g_snprintf (buffer, sizeof (buffer), "%d", height); gexiv2_metadata_try_set_tag_string (GEXIV2_METADATA (metadata), "Exif.Image.ImageLength", buffer, NULL); + if (gexiv2_metadata_try_has_tag (GEXIV2_METADATA (metadata), + "Exif.Photo.PixelYDimension", NULL)) + { + gexiv2_metadata_try_set_tag_string (GEXIV2_METADATA (metadata), + "Exif.Photo.PixelYDimension", + buffer, NULL); + } } /**