WPD 获取媒体尺寸
WPD get media dimensions
我想通过 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
有人知道怎么回事吗?
您得到的错误是:
错误代码:(HRESULT) 0x80070490 (2147943568) - 找不到元素。
您收到此错误的最有可能的原因是实际上 phone 应用程序开发人员通常只是忽略了一些属性。
我已经将我的 phone 连接到 PC 并使用 WPD Information Tool 检查了一些图像,但我只得到了 .jpg 屏幕截图的这些字段:
我认为在大多数情况下,您需要读取要流式传输的图片内容并直接检查其参数。也许在某些格式中,您可以只读取某些 "header" 部分并从那里获取 WIDTH 和 HEIGHT。
我想通过 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
有人知道怎么回事吗?
您得到的错误是: 错误代码:(HRESULT) 0x80070490 (2147943568) - 找不到元素。
您收到此错误的最有可能的原因是实际上 phone 应用程序开发人员通常只是忽略了一些属性。
我已经将我的 phone 连接到 PC 并使用 WPD Information Tool 检查了一些图像,但我只得到了 .jpg 屏幕截图的这些字段:
我认为在大多数情况下,您需要读取要流式传输的图片内容并直接检查其参数。也许在某些格式中,您可以只读取某些 "header" 部分并从那里获取 WIDTH 和 HEIGHT。