summaryrefslogtreecommitdiff
path: root/src/jpeg-utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jpeg-utils.cpp')
-rw-r--r--src/jpeg-utils.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/jpeg-utils.cpp b/src/jpeg-utils.cpp
index 6483563..321a9b6 100644
--- a/src/jpeg-utils.cpp
+++ b/src/jpeg-utils.cpp
@@ -129,6 +129,7 @@ exif_data_free (ExifData *data)
{
if (data) {
g_free (data->override_copyright);
+ g_free (data->external_exif_data);
/* FIXME: free data->priv->image */
g_free (data->priv);
g_free (data);
@@ -663,6 +664,18 @@ modify_exif (const gchar *filename, ExifData *exif, gboolean strip_thumbnail)
g_assert (image.get() != 0);
image->readMetadata();
+
+ /* Write down metadata from external file if supplied */
+ if (exif && exif->external_exif_data) {
+ Exiv2::Image::AutoPtr ext_image = Exiv2::ImageFactory::open (exif->external_exif_data);
+ if (ext_image.get() != 0) {
+ ext_image->clearMetadata();
+ ext_image->readMetadata();
+ image->setMetadata (*ext_image);
+ modified = TRUE;
+ }
+ }
+
Exiv2::ExifData &exifData = image->exifData();
Exiv2::IptcData &iptcData = image->iptcData();