C++ 如何使用WICAPI读取/写入自定义EXIF数据?
我已在以下位置查阅了文件: 作为上下文,我尝试以JPEG-XR格式进行编码,我想模拟GDI+的C++ 如何使用WICAPI读取/写入自定义EXIF数据?,c++,exif,wic,jpeg-xr,C++,Exif,Wic,Jpeg Xr,我已在以下位置查阅了文件: 作为上下文,我尝试以JPEG-XR格式进行编码,我想模拟GDI+的SetPropertyItem,GetPropertyItem功能 我基本上有3个问题: 如果要将自定义属性添加到exif标头,正确的查询路径是什么 我可以使用自定义ID,比如{ushort=1111}来标识它吗?我如何验证ID是否已经定义 这与GdiPlus::PropertyItem的id字段相同吗 例如,以下各项是否有效: PROPVARIANT value; value.vt = VT_
SetPropertyItem
,GetPropertyItem
功能
我基本上有3个问题:
{ushort=1111}
来标识它吗?我如何验证ID是否已经定义id
字段相同吗PROPVARIANT value;
value.vt = VT_LPWSTR;
value.pwszVal= L"Metadata Test";
hr = piFrameQWriter->SetMetadataByName(L"/ifd/exif/{ushort=1111}");
此代码块成功,但当我尝试使用以下命令读回相同的元数据时:
IWICMetadataQueryReader *pQueryReader = NULL;
if(SUCCEEDED(hr))
{
hr = piFrame->GetMetadataQueryReader(&pQueryReader);
}
if (SUCCEEDED(hr))
{
PROPVARIANT value;
hr = pQueryReader->GetMetadataByName(L"/ifd/exif/{ushort=1111}", &value);
}
这将返回E_INVALIDARG错误
我很感激你能帮我理解这是怎么回事。我觉得我没有正确理解文档
谢谢。在调用
GetMetadataByName
之前,是否需要初始化值?至少,我会尝试将value.vt
设置为vt\u EMPTY
。该函数表示它是一个in/out参数,而不仅仅是一个out参数,因此您可能应该确保它已初始化。