77

私のjpeg写真を調べて、たとえば、それらを日付の付いたフォルダーに分類する小さなプログラムをC#で作成したいと思います(私の日付の規則を使用して、くそー...)。

プログラムで日付と時刻や露出などのEXIFデータを取得する比較的簡単な方法を知っている人はいますか?ありがとう!

4

8 に答える 8

49

提案されているように、サードパーティのライブラリを使用することも、手動で実行することもできます(これはそれほど多くの作業ではありません)が、最も単純で最も柔軟なのは、おそらく.NETの組み込み機能を使用することです。詳細については、以下を参照してください。

.NETはデータの解釈や合体を試みないため、「最も柔軟です」と言います。EXIFごとに、基本的にバイトの配列を取得します。これは、実際に必要な制御の量に応じて、良い場合と悪い場合があります。

また、プロパティリストは実際にはEXIF値に直接対応していないことを指摘しておく必要があります。EXIF自体は、IDが重複する複数のテーブルに格納されますが、.NETはすべてを1つのリストに入れ、一部のアイテムのIDを再定義します。ただし、正確なEXIF IDを気にしない限り、.NETマッピングで問題ないはずです。


編集:この答えに従って完全な画像をロードせずにそれを行うことが可能です:https ://stackoverflow.com/a/552642/2097240

于 2009-08-12T21:34:19.207 に答える
23

このメタデータエクストラクタを確認してください。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のコードから入手できます。

于 2008-10-01T08:00:51.110 に答える
9

これは、別の同様の SO の質問へのリンクです。これには、.Netでの「読み取り、書き込み、および写真のメタデータ」に関するこの優れた記事への回答があります。

于 2009-03-11T22:24:46.810 に答える
9

F-Spotなどのアプリケーションで使用されているTagLib#を使用できます。Exif に加えて、画像、オーディオ、ビデオの大量のメタデータ形式を読み取ります。

ExifUtils APIも気に入っていますが、バグが多く、積極的に開発されていません。

于 2011-10-25T09:21:19.293 に答える
6

画像クラスには、PropertyItemsプロパティとPropertyIdListプロパティがあります。あなたはそれらを使うことができます。

于 2008-09-12T10:53:06.130 に答える
4

JPEG画像からEXIFデータを取得するには、次のことが必要です。

  1. EXIFデータの始まりに言及しているJPEGマーカーを探しています。たとえば、通常、oxFFE1は、EXIFデータをエンコードするときに挿入されるマーカーです。これは、EXIFデータが入るアプリケーションセグメントです。
  2. たとえば0xFFE1から0xFFE2までのすべてのデータを解析します。このデータは、JPEGエンコードファイルのバイトストリームになります。
  3. これらのバイトに相当するASCIIには、画像の日付、カメラのモデル名、露出などに関連するさまざまな情報が含まれます。
于 2008-09-12T10:49:18.247 に答える
3

Phil HarveyによるコマンドラインツールExifToolは、多数の独自のRAW形式を含む数十の画像形式で動作し、EXIF、GPS、IPTC、XMP、JFIFなどのさまざまなメタデータ形式を操作できます。

非常に使いやすく、軽量で印象的なアプリケーション。

于 2012-02-03T02:43:06.433 に答える