首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Exiv2不会将XMP持久化到图像中。image->writeMetaData()不写入元数据。我的错误在哪里?

Exiv2不会将XMP持久化到图像中。image->writeMetaData()不写入元数据。我的错误在哪里?
EN

Stack Overflow用户
提问于 2020-12-15 05:50:54
回答 1查看 47关注 0票数 0

当我尝试将XMP元数据添加到使用exiv2作为库的文件中时,它就是不能坚持。在执行我的代码之后,文件被修改了,但是大小没有改变,并且不包含XMP元数据。下面的代码是我的测试用例。

代码语言:javascript
复制
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();

我使用预编译的命令行工具进行了同样的尝试。

代码语言:javascript
复制
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安装。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-15 06:17:29

如果您将exiv2库与vcpkg一起使用,并且需要XMP支持,请确保像这样安装它,不要忘记括号中的xmp……

代码语言:javascript
复制
vcpkg install exiv2[xmp]:x64-windows
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65296986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档