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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.86274 の関連記事表示

<< 0 >>
■86274  Re[2]: TIFの撮影日時がPropertyIdListで取得できない
□投稿者/ Hongliang -(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);
        }
      }
    }
記事No.86272 のレス /過去ログ148より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -