Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用WICAPI读取/写入自定义EXIF数据?_C++_Exif_Wic_Jpeg Xr - Fatal编程技术网

C++ 如何使用WICAPI读取/写入自定义EXIF数据?

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_

我已在以下位置查阅了文件:

作为上下文,我尝试以JPEG-XR格式进行编码,我想模拟GDI+的
SetPropertyItem
GetPropertyItem
功能

我基本上有3个问题:

  • 如果要将自定义属性添加到exif标头,正确的查询路径是什么
  • 我可以使用自定义ID,比如
    {ushort=1111}
    来标识它吗?我如何验证ID是否已经定义
  • 这与GdiPlus::PropertyItem的
    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参数,因此您可能应该确保它已初始化。