4

写真の撮影日値をJPEG形式で取得する機能があります。NEFNikonraw形式で問題が発生しました。Windows 8では、Windowsエクスプローラーの詳細ビューに列を追加すると、撮影日値が表示されます。

次のコマンドを実行すると、「このコーデックは指定されたプロパティをサポートしていません」というエラーが表示されます。

public string GetDate(FileInfo f)
        {
            string date;

            using (FileStream fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
            { 
                BitmapSource img = BitmapFrame.Create(fs);
                BitmapMetadata md = (BitmapMetadata)img.Metadata;
                date = md.DateTaken;
            }

            return date;
        }

BitmapMetadataのGetQueryメソッドを使用して、同様のSO回答で参照されているこの記事の提案を試しましたが、同じエラーが返されました。使用したコードは次のとおりです。

public string GetDate(FileInfo f)
        {
            string date;

            using (FileStream fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
            { 
                BitmapSource img = BitmapFrame.Create(fs);
                BitmapMetadata md = (BitmapMetadata)img.Metadata;
                object t = Mdata.GetQuery("System.Photo.DateTaken");
            }

            return date;
        }

これをWindows8PCに展開しているので、Windows8または.NET4.5のみのソリューションを気にしません。

4

2 に答える 2

3

I finally figured out the issue, I had to install the Nikon NEF Codec on my PC. What I'm confused about is that Windows 8 is able to display NEF images and provide metadata from EXIF such as Date Taken, out of the box. My gut tells me that there is a Windows or .NET library I could use that I could obtain the same information without installing the codec. Unfortunately I'm pressed for time and don't have time to dive deeper.

于 2012-12-19T16:14:06.940 に答える
0

Java has a much more versatile open source library here: metadata-extractor

I just imported their library and it worked like a charm with NEF files, plus it supports many more file extensions.

于 2021-10-07T05:46:42.293 に答える