イメージ メタデータを書き込む方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
ここでは、BitmapEncoder オブジェクトを使ってイメージ メタデータを書き込む方法を示します。 メタデータは、Windows プロパティまたは Windows Imaging Component (WIC) メタデータ クエリ言語を使って書き込むことができます。
BitmapDecoder と BitmapEncoder を使ったメタデータ アクセスについて詳しくは、「イメージ メタデータの読み取り方法」をご覧ください。
注 Windows.Storage.FileProperties API を使うと、ストリームを開かずに、Windows.StorageFile の基本的なプロパティを取得したり設定したりできます。詳しくは、「画像のプロパティを取得する方法」をご覧ください。
理解しておく必要があること
テクノロジ
- JavaScript を使った初めての Windows ランタイム アプリの作成
- Windows.Graphics.Imaging
- WIC メタデータ クエリ言語
- WIC メタデータ クエリ言語
- WIC ネイティブ イメージ形式メタデータのクエリ
- サポートされる Windows プロパティ
必要条件
- JavaScript を使って基本的な Windows ランタイム アプリを作ることができる必要があります。詳しくは、「JavaScript を使った初めての Windows ランタイム アプリの作成」をご覧ください。
- BitmapEncoder を使った画像のエンコード方法を理解している必要があります。詳しくは、「新しい画像をエンコードする方法」をご覧ください。
手順
ステップ 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 つのプロパティの設定と同様ですが、一覧で複数の名前と値のペアを指定します。 このコードでは Orientation と CameraModel を同時に設定しています。
encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
"System.Photo.CameraModel": "Camera Model 1"]);