当我尝试将 XMP 元数据添加到使用 exiv2 作为库的文件中时,它不会粘住。执行我的代码后,文件被修改,但大小没有改变,并且不包含 XMP 元数据。以下代码是我的测试用例。
string fileName = "test.png";
vector<string> keyWords;
keyWords.push_back("keyword 1");
keyWords.push_back("keyword 2");
Exiv2::XmpParser::initialize();
image = Exiv2::ImageFactory::open(fileName);
assert(image.get() != 0);
assert(image->good());
image->readMetadata();
Exiv2::XmpData& xmpData = image->xmpData();
Exiv2::Value::AutoPtr subjects = Exiv2::Value::create(Exiv2::xmpBag);
for each (auto kw in keyWords)
subjects->read(kw);
xmpData.add(Exiv2::XmpKey("Xmp.dc.subject"), subjects.get());
image->writeMetadata();
我使用有效的预编译命令行工具尝试了相同的操作。
exiv2 -v -k -m addxmp.txt mo test.png
File 1/1: test.png
Add Xmp.dc.subject "keyword1" (XmpBag)
我挖掘了原始来源,但没有发现任何区别。什么是我看不到的?
我在 Windows 10 上运行 VS2019,这是一个 Cmake 项目,它使用 vcpkg 管理它的依赖项。exiv2 通过 vcpkg 安装。