From 41e84de578256482c7705e531c37572982a90195 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 16 Mar 2013 21:41:26 +0100 Subject: Strip XMP metadata by default Some RAW editors like Adobe products like to include XMP data. Let's strip them all off (unless disabled). --- sample/src/setup.xml | 4 ++++ src/generators.c | 2 +- src/jpeg-utils.cpp | 13 ++++++++++++- src/jpeg-utils.h | 2 +- src/setup.c | 1 + src/setup.h | 1 + 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/sample/src/setup.xml b/sample/src/setup.xml index e85d006..06aba25 100644 --- a/sample/src/setup.xml +++ b/sample/src/setup.xml @@ -25,6 +25,10 @@ + + + + diff --git a/src/generators.c b/src/generators.c index 0e1985a..ead3fb6 100644 --- a/src/generators.c +++ b/src/generators.c @@ -261,7 +261,7 @@ generate_image (TGallerySetup *setup, if (! is_thumbnail) { exif_data = exif_data_new_empty (); metadata_apply_overrides (exif_data, setup, path_info, items, item); - modify_exif (img_dst, exif_data, setup->erase_exif_thumbnail); + modify_exif (img_dst, exif_data, setup->erase_exif_thumbnail, setup->strip_xmp); exif_data_free (exif_data); } diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp index 321a9b6..c9c080d 100644 --- a/src/jpeg-utils.cpp +++ b/src/jpeg-utils.cpp @@ -650,7 +650,7 @@ fake_iptc_time (Exiv2::IptcData &iptcData, time_t datetime) * - write down overriden keys */ void -modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail) +modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail, gboolean strip_xmp) { gboolean modified; gboolean res; @@ -741,6 +741,17 @@ modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail) } } + if (strip_xmp) { + if (! image->xmpData().empty()) { + image->clearXmpData (); + modified = TRUE; + } + if (! image->xmpPacket().empty()) { + image->clearXmpPacket (); + modified = TRUE; + } + } + if (modified) image->writeMetadata(); } diff --git a/src/jpeg-utils.h b/src/jpeg-utils.h index d393fbe..90aa2fa 100644 --- a/src/jpeg-utils.h +++ b/src/jpeg-utils.h @@ -107,7 +107,7 @@ void calculate_sizes (const unsigned long max_width, const unsigned long max_hei * modify_exif: - strip thumbnail stored in EXIF table * - write down overriden keys */ -void modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail); +void modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail, gboolean strip_xmp); G_END_DECLS diff --git a/src/setup.c b/src/setup.c index 7dde0c8..21ee839 100644 --- a/src/setup.c +++ b/src/setup.c @@ -94,6 +94,7 @@ parse_setup_xml (const gchar *filename) setup->preload = xml_file_get_node_attribute_boolean (xml, "/gallery_setup/images/preload", "value", TRUE); setup->use_iptc_exif = xml_file_get_node_attribute_boolean (xml, "/gallery_setup/images/use_iptc_exif", "value", FALSE); setup->erase_exif_thumbnail = xml_file_get_node_attribute_boolean (xml, "/gallery_setup/images/erase_embed_thumbnail", "value", FALSE); + setup->strip_xmp = xml_file_get_node_attribute_boolean (xml, "/gallery_setup/images/strip_xmp", "value", TRUE); setup->write_supplied_exif = xml_file_get_node_attribute_boolean (xml, "/gallery_setup/images/write_supplied_exif", "value", FALSE); setup->nofullsize = xml_file_get_node_present (xml, "/gallery_setup/images/nofullsize"); setup->autorotate = xml_file_get_node_attribute_boolean (xml, "/gallery_setup/images/autorotate", "value", TRUE); diff --git a/src/setup.h b/src/setup.h index 10e9d7b..6d5316e 100644 --- a/src/setup.h +++ b/src/setup.h @@ -56,6 +56,7 @@ typedef struct { gboolean preload; gboolean use_iptc_exif; gboolean erase_exif_thumbnail; + gboolean strip_xmp; gboolean write_supplied_exif; gboolean nofullsize; ThumbnailSquareType squared_thumbnail_type; -- cgit v1.2.3