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。