summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sample/src/setup.xml4
-rw-r--r--src/generators.c2
-rw-r--r--src/jpeg-utils.cpp13
-rw-r--r--src/jpeg-utils.h2
-rw-r--r--src/setup.c1
-rw-r--r--src/setup.h1
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 @@
<!-- (allowed values: "yes", "no") default = no -->
<erase_embed_thumbnail value="yes" />
+ <!-- erase all XMP data, usually containing RAW develop settings -->
+ <!-- (allowed values: "yes", "no") default = yes -->
+ <strip_xmp value="yes" />
+
<!-- in case of supplied external EXIF data, shall these be written in generated images? -->
<!-- This will make image files carry the same data as used for pages -->
<!-- (allowed values: "yes", "no") default = "no" as this could overwrite important data -->
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;