.Net の System.Drawing.Image クラスで公開されている PropertyItems を介して、画像から基本的な EXIF データを読み取るアプリを作成しました。ただし、これらのプロパティを介して Canon 固有の EXIF データを取得できません。この情報をどう読むか?Photoshop が読み取るため、ファイルに存在することはわかっています。
6 に答える
ずいぶん前に見つけたのですが、まだ使っていません。メーカー固有の情報が含まれているようでした。
http://renaud91.free.fr/MetaDataExtractor/
アップデート:
メタデータ エクストラクタ プロジェクトは、2002 年から Java で健在であり、現在は .NET で利用できます。Canon のメーカーノートだけでなく、Agfa、Casio、Epson、Fujifilm、Kodak、Kyocera、Leica、Minolta、Nikon、Olympus、Panasonic、Pentax、Sanyo、Sigma/Foveon、Sony のカメラとスキャナーのメーカーノートも包括的にサポートしています。
ここでは、いくつかの Canon (およびその他) のカメラ画像の出力例を参照できます。
このライブラリは、NuGet または GitHub から入手できます。
使用例:
IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);
foreach (var directory in directories)
foreach (var tag in directory.Tags)
{
Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
}
ここで更新された回答を参照してください: C# Retrieve Canon Specific EXIF Data
フレームワークの v3 (またはそれ以降) に対してコンパイルしている場合は、BitmapSource
classを使用して画像を読み込むことができます。これにより、Metadata
プロパティを通じて EXIF メタデータが公開されます。これにより、写真の EXIF 情報との関連性が大幅に高まりますが、メーカー ノートは具体的なものであり、さらにデコードする必要があります。
メタデータ エクストラクタプロジェクトは、2002 年から Java で健在であり、現在は .NET で利用できます。Canon の makernotes だけでなく、Agfa、Casio、Epson、Fujifilm、Kodak、Kyocera、Leica、Minolta、Nikon、Olympus、Panasonic、Pentax、Sanyo、Sigma/Foveon、Sony のカメラとスキャナーの makernotes も包括的にサポートしています。
ここで、いくつかの Canon (およびその他) のカメラ画像の出力例を参照できます。
使用例:
IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);
foreach (var directory in directories)
foreach (var tag in directory.Tags)
{
Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
}
Mark Redman's answerの lib は、何年も前の私の Java ライブラリの古いポートであることに注意してください。私は現在、C# と Java の両方のプロジェクトを保守して、機能を同等にしています。
BCL には、EXIF に役立つものは何も組み込まれていません。
このSO の質問と回答を見てください(.Net に最適な EXIF ライブラリは何ですか?)。EXIF データを取得するために使用できる商用ライブラリとオープン ソース ライブラリがいくつかあります。
RAW ファイルの場合は、dcraw.netを使用して情報を取得できます。