画像ファイルのプロパティ - 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でのアイテム定義も含めて修正すれば、グループ構造を持つ文書や音楽ファイル、ビデオ画像をアイテムとして扱う修正を加えることができるので、アプリで扱うデータによって修正を加えてみてください。