JPEGファイルのXMPメタデータ取得(その後)
ちょっと前の記事で.NET Framework 3.0開発環境を構築したと書きましたが、その理由の一つが、これも以前書いた画像管理システム(というより検索システム)で写真のスキャン時にJPEG画像に埋め込んだXMPメタデータを取得して検索用のインデックスを作成するためでした。
現在実装している取得方法はとにかく力技なのですが、WPFアプリケーションで使用するために.NET Framework 3.0で追加されたSystem.Windows.Media.Imaging名前空間のBitmapMetadataクラスを使用すれば、EXIFやXMP、IPTCメタデータの取得や設定を簡潔に記述できます。
で、XMPメタデータを取得するには、WindowsBaseとPresentationCoreに参照設定し、以下のように記述すればOKのようです。
Stream jpegStream = new FileStream(@"hogehoge.jpg", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
JpegBitmapDecoder jpegDecoder = new JpegBitmapDecoder(jpegStream, BitmapCreateOptions.None, BitmapCacheOption.None);
BitmapMetadata bitmapMatadata = (BitmapMetadata)jpegDecoder.Frames[0].Metadata;
System.Diagnostics.Debug.WriteLine(bitmapMatadata.Title);
System.Diagnostics.Debug.WriteLine(bitmapMatadata.Comment);
jpegStream.Close();
Windows VistaならOS標準でこのようなメタデータの取得・設定ができるので、WindowsフォトギャラリーやAdobe Photoshop Elementsの写真整理モードなどの画像管理ソフトの相互運用が楽になり、比較的安心して画像にメタデータを埋め込むことができるようになってきました。ここではMicrosoftとAdobeは喧嘩しなかったんですね。(^^ゞ
http://pub.ne.jp/tb.php/805071