当我尝试将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)我深入研究了原始源代码,但没有发现任何差异。我看不到的是什么?
我在Windows10上运行VS2019,这是一个Cmake项目,它使用vcpkg管理它的依赖项。exiv2通过vcpkg安装。
发布于 2020-12-15 06:17:29
如果您将exiv2库与vcpkg一起使用,并且需要XMP支持,请确保像这样安装它,不要忘记括号中的xmp……
vcpkg install exiv2[xmp]:x64-windowshttps://stackoverflow.com/questions/65296986
复制相似问题