diff options
Diffstat (limited to 'src/jpeg-utils.cpp')
| -rw-r--r-- | src/jpeg-utils.cpp | 13 |
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(); |
