如何取得影像屬性 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
以下將說明如何使用 ImageProperties 物件從影像檔抓取屬性。
如果您沒有 BitmapDecoder 物件,或是只需要常用的影像處理屬性,建議您使用 ImageProperties 類別。ImageProperties 會提供基本資料,像是標題和拍攝日期。另外還可以讓您存取 Windows 屬性系統,其中包含許多常用的屬性。 如需詳細資訊,可以在下列位置找到完整的 Windows 屬性命名空間:Windows 屬性。
注意 影像格式及轉碼器只支援部分屬性。如需詳細資訊,請參閱相片中繼資料原則。
您必須知道的事
技術
先決條件
- 我們假設您可以使用 JavaScript 建立基本的 Windows 執行階段應用程式。如需詳細資訊,請參閱使用 JavaScript 建立您的第一個 Windows 執行階段應用程式。
- 您已經從影像建立 StorageFile 物件。 如何解碼影像會逐步引導您執行該程序。
指示
步驟 1: 取得檔案物件
編寫函式時一開始要接收 StorageFile 物件,並宣告要存放您所擷取之屬性的變數。
function GetImageProperties(file) {
var title;
var orientation;
var aperture;
在這裡宣告變數,使其保持在範圍內。
步驟 2: 擷取基本屬性
StorageFile 有一個成員 Properties,可以存取檔案上的內容相關屬性。您可以使用 properties.getImagePropertiesAsync 取得影像處理屬性。
file.properties.getImagePropertiesAsync().then(function (imageProperties) {
只要有 ImageProperties 物件,就可以立即取得部分常見屬性,例如標題與評等。
title = imageProperties.title;
注意 如果影像沒有包含特定的屬性,或是影像格式不支援該屬性,則會傳回 null。您必須先檢查每一個屬性是否存在,才能進行擷取。
步驟 3: 擷取 Windows 屬性
您也可以藉由將屬性機碼名稱清單傳遞至 imageProperties.retrievePropertiesAsync,以非同步的方式要求支援的 Windows 屬性。
return imageProperties.retrievePropertiesAsync(["System.Photo.Orientation", “System.Photo.Aperture”]);
}).done(function (retrievedProperties) {
retrievedProperties 物件是機碼值組的集合,其中每一個機碼都是您要求的 Windows 屬性名稱,而值是對應的資料。當您呼叫查詢函式時,它會同步進行。retrievePropertiesAsync 函式會處理這個處理程序。
orientation = retrievedProperties.lookup("System.Photo.Orientation");
aperture = retrievedProperties.lookup("System.Photo.Aperture");
注意 如果影像沒有包含特定的屬性,或是影像格式不支援該屬性,則會傳回 null。您必須先檢查每一個屬性是否存在,才能進行擷取。
備註
您可以使用 BitmapPropertiesView 取得 Windows 屬性,像是 ImageProperties。但是它使用 WIC 中繼資料查詢語言,對檔案中的原生中繼資料結構提供較低層級的存取。如需詳細資訊,請參閱如何讀取影像中繼資料。