BitmapPropertiesView.GetPropertiesAsync(IIterable<String>) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
异步检索一个或多个位图属性。
public:
virtual IAsyncOperation<BitmapPropertySet ^> ^ GetPropertiesAsync(IIterable<Platform::String ^> ^ propertiesToRetrieve) = GetPropertiesAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<BitmapPropertySet> GetPropertiesAsync(IIterable<winrt::hstring> const& propertiesToRetrieve);
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<BitmapPropertySet> GetPropertiesAsync(IEnumerable<string> propertiesToRetrieve);
function getPropertiesAsync(propertiesToRetrieve)
Public Function GetPropertiesAsync (propertiesToRetrieve As IEnumerable(Of String)) As IAsyncOperation(Of BitmapPropertySet)
参数
表示所请求的属性键或查询的字符串集合。 有效字符串包括 Windows 属性 和 Windows 映像组件元数据查询。
返回
管理位图属性的异步检索的对象。
实现
M:Windows.Graphics.Imaging.IBitmapPropertiesView.GetPropertiesAsync(System.Collections.Generic.IEnumerable{System.String})
M:Windows.Graphics.Imaging.IBitmapPropertiesView.GetPropertiesAsync(System.Collections.Generic.IEnumerable{Platform::String})
M:Windows.Graphics.Imaging.IBitmapPropertiesView.GetPropertiesAsync(System.Collections.Generic.IEnumerable{winrt::hstring})
- 属性
注解
异步操作生成一个集合,表示请求的图像属性键及其值。 值存储为 BitmapTypedValue,其中包含实际数据以及数据的 PropertyType 。
特定图像只能包含一些 (,或者不包含所请求属性) 。 在这种情况下,集合将仅具有图像中找到的属性的键值对。 在尝试从属性获取数据之前,需要检查是否存在属性:
bitmapPropertiesView.getPropertiesAsync(["System.Title"]).done(function (retrievedProperties) {
if (retrievedProperties.hasKey("System.Title")) {
var titleProperty = retrievedProperties.lookup("System.Title");
var title = titleProperty.value;
}
});
查询元数据块
如果使用元数据查询语言请求元数据块而不是属性,则返回的值是 一个 BitmapPropertiesView ,表示该块中的元数据。 可以从 BitmapPropertiesView 请求块中包含的任何元数据:
// this is equivalent to directly requesting "/app1/ifd/{ushort=274}" from bitmapPropertiesView
bitmapPropertiesView.getPropertiesAsync(["/app1/ifd"]).done(function (retrievedProperties) {
// var ifdBlock is a BitmapPropertiesView
var ifdBlock = retrievedProperties.lookup("/app1/ifd").value;
return ifdBlock.getPropertiesAsync(["/{ushort=274}");
}).then(function (retrievedProperties) {
var orientation = retrievedProperties.lookup("/{ushort=274}").value;
});
枚举帧内的所有元数据
可以通过传入零长度的空 () 字符串集合来请求元数据块的所有内容,包括子块和属性。 这会生成一个集合,其中包含 BitmapPropertiesView 范围中的每个子块和属性。 这样,就可以以迭代方式检索图像帧中包含的所有元数据。
bitmapPropertiesView.getPropertiesAsync([]).done(function (retrievedProperties) {
var iterator = retrievedProps.first();
while (iterator.hasCurrent) {
// iterator.current gives a key-value pair of string, BitmapTypedValue
// nextMetadataBlock is a BitmapPropertiesView containing the sub-block
var nextMetadataBlock = iterator.current.value.value;
iterator.moveNext();
}
});
如果图像格式不支持元数据,则会失败并出现 HRESULT WINCODEC_ERR_UNSUPPORTEDOPERATION。