BitmapPropertiesView.GetPropertiesAsync(IIterable<String>) 方法

定义

异步检索一个或多个位图属性。

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)

参数

propertiesToRetrieve

IIterable<String>

IEnumerable<String>

IIterable<Platform::String>

IIterable<winrt::hstring>

表示所请求的属性键或查询的字符串集合。 有效字符串包括 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

适用于

另请参阅