私のjpeg写真を調べて、たとえば、それらを日付の付いたフォルダーに分類する小さなプログラムをC#で作成したいと思います(私の日付の規則を使用して、くそー...)。
プログラムで日付と時刻や露出などのEXIFデータを取得する比較的簡単な方法を知っている人はいますか?ありがとう!
私のjpeg写真を調べて、たとえば、それらを日付の付いたフォルダーに分類する小さなプログラムをC#で作成したいと思います(私の日付の規則を使用して、くそー...)。
プログラムで日付と時刻や露出などのEXIFデータを取得する比較的簡単な方法を知っている人はいますか?ありがとう!
提案されているように、サードパーティのライブラリを使用することも、手動で実行することもできます(これはそれほど多くの作業ではありません)が、最も単純で最も柔軟なのは、おそらく.NETの組み込み機能を使用することです。詳細については、以下を参照してください。
.NETはデータの解釈や合体を試みないため、「最も柔軟です」と言います。EXIFごとに、基本的にバイトの配列を取得します。これは、実際に必要な制御の量に応じて、良い場合と悪い場合があります。
また、プロパティリストは実際にはEXIF値に直接対応していないことを指摘しておく必要があります。EXIF自体は、IDが重複する複数のテーブルに格納されますが、.NETはすべてを1つのリストに入れ、一部のアイテムのIDを再定義します。ただし、正確なEXIF IDを気にしない限り、.NETマッピングで問題ないはずです。
編集:この答えに従って完全な画像をロードせずにそれを行うことが可能です:https ://stackoverflow.com/a/552642/2097240
このメタデータエクストラクタを確認してください。Javaで記述されていますが、C#にも移植されています。Javaバージョンを使用して、日付タグとモデルタグに基づいてjpegファイルの名前を変更する小さなユーティリティを作成しました。非常に使いやすいです。
メタデータの編集-エクストラクターは.NETもサポートしています。これは、画像やビデオからメタデータにアクセスするための非常に高速でシンプルなライブラリです。
Exifだけでなく、IPTC、XMP、およびJPEG、PNG、GIF、PNG、ICO、WebP、PSDなどのファイルタイプからの他の多くのタイプのメタデータを完全にサポートします...
var directories = ImageMetadataReader.ReadMetadata(imagePath);
// print out all metadata
foreach (var directory in directories)
foreach (var tag in directory.Tags)
Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");
// access the date time
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);
NuGetおよびGitHubのコードから入手できます。
これは、別の同様の SO の質問へのリンクです。これには、.Netでの「読み取り、書き込み、および写真のメタデータ」に関するこの優れた記事への回答があります。
画像クラスには、PropertyItemsプロパティとPropertyIdListプロパティがあります。あなたはそれらを使うことができます。
JPEG画像からEXIFデータを取得するには、次のことが必要です。
Phil HarveyによるコマンドラインツールExifToolは、多数の独自のRAW形式を含む数十の画像形式で動作し、EXIF、GPS、IPTC、XMP、JFIFなどのさまざまなメタデータ形式を操作できます。
非常に使いやすく、軽量で印象的なアプリケーション。