画像ファイルのプロパティ - Windows 8 ストアアプリテンプレート
Entertainment PhotoのItemDetailPageでは、画像のプロパティを表示しています。
赤点線で囲んだ部分が表示部分です。
WinRT APIのWindows.Storage名前空間に用意されているStorageFileクラス、これがファイルをアクセスするためのクラスなのですが、このクラスは単にファイルにアクセスするためのストリームの取り出しやファイル操作の機能を提供するだけのものではありません。詳細は、
https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.storagefile.aspx
を見ていただくとして、このクラスのプロパティのProperties
https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.storagefile.properties.aspx
から、ファイルに紐づけられた各種情報を取り出すことができます。Propertiesには、以下のメソッドが用意されていて、それぞれ、そのファイルの種別に応じて各種情報を取り出すことができます。
- GetDocumentPropertiesAsync
ドキュメントファイルの著者やキーワードなど - GetImagePropertiesAsync
画像に関する各種情報 - GetMusicPropertiesAsync
曲に関するアルバムやアーティスト、曲名など - GetVideoPropertiesAsync
ビデオに関するビットレートやパブリッシャー、撮影場所など
Entertainment Photoでは、GetImagePropertiesAsync()を使って値を取り出し、ItemDetailPageの右側に表示しています。GetImagePropertiesAsync()で取得した戻り値からは、更に以下の情報を取り出すことができます。
- CameraManufacturer
カメラの製造元 - CameraModel
カメラの機種 - DateTaken
撮影日時 - Height
画像の縦ピクセル数 - Keywords
キーワード - Latitude
緯度 - Longitude
経度 - Orientation
方向(縦、横) - PeopleNames
人々の名前 - Rating
レーティング(数字) - Title
タイトル - Width
画像の横ピクセル数
最初の図の赤点線で表示している値群は、そのままこれらのプロパティを表示しています。サンプルコード的には、
var photoFile = await folder.GetFileAsync(fileName); // 画像ファイル StorageFileの取り出し
var imageProps = await photoFile.Properties.GetImagePropertiesAsync();
string manufacturer = imageProps.CameraManufacturer;
・・・・・・・・
こんな感じで取り出します。アプリテンプレートでは単にデータを表示しているだけですが、日付ごとに並べたり、緯度経度を基に写真を地図にマップしたり、Ratingをつけたりと色々なカスタマイズをしてみてください。
このアプリテンプレート、PhotoDataSource.csでのアイテム定義も含めて修正すれば、グループ構造を持つ文書や音楽ファイル、ビデオ画像をアイテムとして扱う修正を加えることができるので、アプリで扱うデータによって修正を加えてみてください。