イメージ メタデータを書き込む方法 (HTML)

[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]

ここでは、BitmapEncoder オブジェクトを使ってイメージ メタデータを書き込む方法を示します。 メタデータは、Windows プロパティまたは Windows Imaging Component (WIC) メタデータ クエリ言語を使って書き込むことができます。

BitmapDecoderBitmapEncoder を使ったメタデータ アクセスについて詳しくは、「イメージ メタデータの読み取り方法」をご覧ください。

  Windows.Storage.FileProperties API を使うと、ストリームを開かずに、Windows.StorageFile の基本的なプロパティを取得したり設定したりできます。詳しくは、「画像のプロパティを取得する方法」をご覧ください。

 

理解しておく必要があること

テクノロジ

必要条件

手順

ステップ 1: エンコーダー オブジェクトを取得する

BitmapEncoder オブジェクトを受け取る関数を最初に作成します。

function (encoder) {
    

エンコーダーを使うとイメージ メタデータにアクセスできます。 まだエンコーダー オブジェクトがない場合は、「新しい画像をエンコードする方法」をご覧ください。

ステップ 2: 設定するメタデータのコレクションを作成する

エンコーダーに対して設定するメタデータ項目を保存するには、BitmapPropertySet を使います。各メタデータ項目は、キーと値のペアになっています。

キーは、設定するメタデータ項目を識別する文字列です。BitmapEncoder では、いくつかの Windows プロパティのほか、WIC メタデータ クエリ言語を使って構築されたクエリを使うことができます。サポートされている Windows プロパティの一覧については、「サポートされる Windows プロパティ」をご覧ください。サポートされる WIC メタデータ クエリの概要については、「WIC ネイティブ イメージ形式メタデータのクエリ」をご覧ください。

対象となる値は、実際のメタデータ値を明示的なデータ型 (Windows.Foundation.PropertyType) に関連付けることのできる BitmapTypedValue です。

EXIF 方向を指定する System.Photo.Orientation メタデータの値を 1 ("通常" の方向) に設定し、データ型として uint16 を割り当てます。

    var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
    var orientationValue = new Windows.Graphics.Imaging.BitmapTypedValue(
        1, // Defined as EXIF orientation = "normal"
        Windows.Foundation.PropertyType.uint16
        );

    propertySet.insert("System.Photo.Orientation", orientationValue);     

ステップ 3: エンコーダーでメタデータを設定する

すべてのメタデータ項目を構築したら、それらをエンコーダーに設定し、エンコーディング操作を続けます。

    encoder.bitmapProperties.setPropertiesAsync(propertySet).done(function () {
        // Continue the encoding operation.
    }, function (error) {
        switch (error.number) {
            case -2003292351: // WINCODEC_ERR_PROPERTYNOTSUPPORTED
                // The file format does not support this property.
                break;
            default:
                throw error;
        }
    });
}    

  サポートされる一連のメタデータ項目は、画像形式ごとに異なります。画像形式でサポートされないメタデータやプロパティ項目を設定しようとすると、エラーが発生します。たとえば、System.Photo.Orientation プロパティは、JPEG 画像、TIFF 画像、JPEG-XR 画像でのみサポートされます。

 

注釈

複数のプロパティの設定は、1 つのプロパティの設定と同様ですが、一覧で複数の名前と値のペアを指定します。 このコードでは OrientationCameraModel を同時に設定しています。

encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
                                                         "System.Photo.CameraModel": "Camera Model 1"]);

関連トピック

画像をエンコードする方法

System.Photo プロパティ

イメージ メタデータを読み取る方法

WIC メタデータ クエリ言語

WIC ネイティブ イメージ形式メタデータのクエリ

サポートされる Windows プロパティ