diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 4d8f93d55..b38fc745c 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -1370,7 +1370,7 @@ bool ImageIO::saveMetadata(const Glib::ustring &fname) const if (has_meta) { try { - metadataInfo.saveToImage(fname); + metadataInfo.saveToImage(fname, false); // auto src = open_exiv2(metadataInfo.filename()); // auto dst = open_exiv2(fname); // src->readMetadata(); diff --git a/rtengine/metadata.cc b/rtengine/metadata.cc index 8028e933f..049233cc6 100644 --- a/rtengine/metadata.cc +++ b/rtengine/metadata.cc @@ -217,7 +217,7 @@ void Exiv2Metadata::do_merge_xmp(Exiv2::Image *dst) const } -void Exiv2Metadata::saveToImage(const Glib::ustring &path) const +void Exiv2Metadata::saveToImage(const Glib::ustring &path, bool preserve_all_tags) const { auto dst = open_exiv2(path, false); if (image_.get()) { @@ -227,7 +227,9 @@ void Exiv2Metadata::saveToImage(const Glib::ustring &path) const do_merge_xmp(dst.get()); } auto srcexif = image_->exifData(); - remove_unwanted(srcexif); + if (!preserve_all_tags) { + remove_unwanted(srcexif); + } dst->setExifData(srcexif); } else { dst->setExifData(exif_data_); diff --git a/rtengine/metadata.h b/rtengine/metadata.h index 57484d234..0f9f7919d 100644 --- a/rtengine/metadata.h +++ b/rtengine/metadata.h @@ -53,7 +53,7 @@ public: void setExif(const rtengine::procparams::ExifPairs& exif); void setIptc(const rtengine::procparams::IPTCPairs& iptc); - void saveToImage(const Glib::ustring& path) const; + void saveToImage(const Glib::ustring& path, bool preserve_all_tags) const; void saveToXmp(const Glib::ustring& path) const; void setExifKeys(const std::vector *keys);