【问题标题】:WPD get media dimensionsWPD 获取媒体尺寸
【发布时间】:2017-12-20 15:04:49
【问题描述】:

我想通过 IPortableDeviceValues 获取 WPD 上图像文件的宽度和高度。

根据Windows Dev Center,每个类型为 WPD_CONTENT_TYPE_IMAGE 的对象(它们是)都需要提供 WPD_MEDIA_WIDTH/WPD_MEDIA_HEIGHT 但我总是出错。

HRESULT MyPortableDevice::getIntValue(IPortableDeviceProperties* properties, PCWSTR objectID, const PROPERTYKEY& key, DWORD* value)
{

ComPtr<IPortableDeviceValues>        objectProperties;
ComPtr<IPortableDeviceKeyCollection> propertiesToRead;

HRESULT hr = CoCreateInstance(CLSID_PortableDeviceKeyCollection,
                              nullptr,
                              CLSCTX_INPROC_SERVER,
                              IID_PPV_ARGS(&propertiesToRead));

if (SUCCEEDED(hr)) {
    HRESULT tempHr = S_OK;
    tempHr = propertiesToRead->Add(key);      
}

if (SUCCEEDED(hr)) {
    hr = properties->GetValues(objectID,                
                               propertiesToRead.Get(),  
                               &objectProperties); 
}   

if (SUCCEEDED(hr)) {

    ULONG intValue = 0;
    hr = objectProperties->GetUnsignedIntegerValue(key, &intValue);

    if (SUCCEEDED(hr)) {          
        value = &intValue;
        intValue = 0;
    }            
}

return hr;

我总是从

得到一个错误值
hr = objectProperties->GetUnsignedIntegerValue(key, &intValue);

hr = 0x80070490 我找不到这个错误代码here

有谁知道怎么回事?

【问题讨论】:

    标签: c++ wpd


    【解决方案1】:

    你得到的错误是: 错误代码:(HRESULT) 0x80070490 (2147943568) - 找不到元素。

    您收到此错误的原因很可能是实际上手机应用程序开发人员通常只是忽略了一些属性。

    我已将手机连接到 PC 并使用 WPD Information Tool 检查了一些图像,我只得到 .jpg 屏幕截图的这些字段:

    我认为在大多数情况下,您需要读取图片内容以进行流式传输并直接检查其参数。也许在某些格式中,您只能读取一些“标题”部分并从那里获取 WIDTH 和 HEIGHT。

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2017-03-19
      相关资源
      最近更新 更多