C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■86274 / 2階層)  TIFの撮影日時がPropertyIdListで取得できない
□投稿者/ Hongliang (594回)-(2018/01/12(Fri) 15:25:07)
カメラは持ってないので、Win7 SP1で適当なpngファイルをMS Paintでtiffに保存しなおし、
Explorerを使ってプロパティ>詳細から撮影日時を設定して、ファイルを観察しました。

タグID 0x9003は存在していますが、これはTIFFタグとして存在しているのではなく、
TIFFタグ 0x8769 <Exif IFD> の子要素として存在しています。
GDI+ではExif IFDは無視されるみたいですね。
また、XMPパケットとしても撮影日時が格納されていました。
これはタグID 0x02BC <XMP> の内部に、XMLの形式で入っていますが、
これもGDI+では無視されるタグのようです。

System.Drawing/GDI+を使って解析する限りはどうにもならないんじゃないかなぁ、
という印象ですね。

主にWPFにて使用される画像コンポーネントであるSystem.Windows.Media.Imaging/WICを
使用すれば、これらのタグも取得できるのを確認しました。

var dec = BitmapDecoder.Create(...);
var frame = dec.Frames[0];
var meta = (BitmapMetadata)frame.Metadata;
var date1 = meta.GetQuery("/ifd/{ushort=34665}/{ushort=36867}");
var date2 = meta.GetQuery("/ifd/{ushort=700}/xmp:CreateDate");

// BitmapMetadataでのタグのたどり方
static void ShowMeta(BitmapMetadata meta, int depth) {
  foreach (var id in meta) {
    var value = meta.GetQuery(id);
    var child = value as BitmapMetadata;
    var indent = new String(' ', depth * 2);
    if (child == null) {
      Debug.Print("{0}{1}={2}", indent, id, value);
    }
    else {
      Debug.Print("{0}{1}:", indent, id);
      ShowMeta(child, depth + 1);
    }
  }
}

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: TIFの撮影日時がPropertyIdListで取得できない /なと →Re[3]: TIFの撮影日時がPropertyIdListで取得できない /なと
 
上記関連ツリー

TIFの撮影日時がPropertyIdListで取得できない / なと (18/01/12(Fri) 13:42) #86272
Re[1]: TIFの撮影日時がPropertyIdListで取得できない / なと (18/01/12(Fri) 13:59) #86273
  ├ Re[2]: TIFの撮影日時がPropertyIdListで取得できない / みい (18/01/12(Fri) 15:33) #86275
  └ TIFの撮影日時がPropertyIdListで取得できない / Hongliang (18/01/12(Fri) 15:25) #86274 ←Now
    └ Re[3]: TIFの撮影日時がPropertyIdListで取得できない / なと (18/01/12(Fri) 16:41) #86276
      ├ Re[4]: TIFの撮影日時がPropertyIdListで取得できない / Hongliang (18/01/12(Fri) 16:55) #86278
      └ Re[4]: TIFの撮影日時がPropertyIdListで取得できない / zakzak (18/01/12(Fri) 16:50) #86277
        └ Re[5]: TIFの撮影日時がPropertyIdListで取得できない / なと (18/01/12(Fri) 20:14) #86282 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信