[gexiv2/wip/fix-metadata-pixelsize: 1/3] metadata: Use proper exif tag for height



commit 79fe2bdddc116fe9c4bfc271f4378a613df8f403
Author: Jens Georg <mail jensge org>
Date:   Tue Oct 23 15:52:22 2018 +0200

    metadata: Use proper exif tag for height
    
    The height of the pixel data is in Exif.Photo.ImageLength,
    not ImageHeight
    
    Fixes #31

 gexiv2/gexiv2-metadata.cpp |   4 ++--
 test/data/no-metadata.jpg  | Bin 0 -> 1924 bytes
 test/gexiv2-regression.c   |  19 +++++++++++++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/gexiv2/gexiv2-metadata.cpp b/gexiv2/gexiv2-metadata.cpp
index b6600a7..1d38707 100644
--- a/gexiv2/gexiv2-metadata.cpp
+++ b/gexiv2/gexiv2-metadata.cpp
@@ -570,8 +570,8 @@ void gexiv2_metadata_set_metadata_pixel_height (GExiv2Metadata *self, gint heigh
     Exiv2::XmpData& xmp_data = self->priv->image->xmpData();
     
     exif_data ["Exif.Photo.PixelXDimension"] = static_cast<uint32_t>(height);
-    exif_data ["Exif.Image.ImageHeight"] = static_cast<uint32_t>(height);
-    xmp_data ["Xmp.tiff.ImageHeight"] = static_cast<uint32_t>(height);
+    exif_data ["Exif.Image.ImageLength"] = static_cast<uint32_t>(height);
+    xmp_data ["Xmp.tiff.ImageLength"] = static_cast<uint32_t>(height);
     xmp_data ["Xmp.exif.PixelXDimension"] = static_cast<uint32_t>(height);
 }
 
diff --git a/test/data/no-metadata.jpg b/test/data/no-metadata.jpg
new file mode 100644
index 0000000..3d76e87
Binary files /dev/null and b/test/data/no-metadata.jpg differ
diff --git a/test/gexiv2-regression.c b/test/gexiv2-regression.c
index 44b8d70..bfb67ae 100644
--- a/test/gexiv2-regression.c
+++ b/test/gexiv2-regression.c
@@ -14,6 +14,24 @@
 
 #include <string.h>
 
+/* Regression test for https://gitlab.gnome.org/GNOME/gexiv2/issues/31 */
+static void test_ggo_31(void)
+{
+    GExiv2Metadata *meta = NULL;
+    gboolean result = FALSE;
+    GError *error = NULL;
+
+    meta = gexiv2_metadata_new();
+    g_assert_nonnull(meta);
+
+    result = gexiv2_metadata_open_path (meta, SAMPLE_PATH "/no-metadata.jpg", &error);
+    g_assert_no_error(error);
+    g_assert_true(result);
+
+    gexiv2_metadata_set_metadata_pixel_height(meta, 123);
+    g_clear_object(&meta);
+}
+
 static void test_bgo_792239(void)
 {
     GExiv2Metadata *meta = NULL;
@@ -115,6 +133,7 @@ int main(int argc, char *argv[static argc + 1])
     g_test_add_func("/bugs/gnome/730136", test_bgo_730136);
     g_test_add_func("/bugs/gnome/792239", test_bgo_792239);
     g_test_add_func("/bugs/gnome/790925", test_bgo_790925);
+    g_test_add_func("/bugs/gnome/gitlab/31", test_ggo_31);
 
     return g_test_run();
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]