C# を使用してファイルから EXIF データを取得する方法 [終了]

StackOverflow https://stackoverflow.com/questions/58649

  •  09-06-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

これをチェックしてください メタデータエクストラクター. 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 にあります.

他のヒント

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

私が「最も柔軟性がある」と言ったのは、.NET はいかなる方法でもデータを解釈したり結合したりしようとしないからです。各 EXIF について、基本的にバイトの配列を取得します。これは、実際にどの程度の制御が必要かによって、良い場合も悪い場合もあります。

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

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

使用できます タグリブ# などのアプリケーションで使用されます。 Fスポット. 。Exif に加えて、画像、オーディオ、ビデオの大量のメタデータ形式を読み取ります。

私も好き ExifUtils API ですがバグが多く、積極的に開発されていません。

Image クラスには PropertyItems プロパティと PropertyIdList プロパティがあります。それらを使用できます。

JPEG 画像から EXIF データを取得するには、次の手順を実行します。

  1. EXIF データの先頭を示す JPEG マーカーを探します。例えば通常、oxFFE1 は EXIF データのエンコード中に挿入されるマーカーであり、EXIF データが配置されるアプリケーション セグメントです。
  2. たとえば 0xFFE1 から 0xFFE2 までのすべてのデータを解析します。このデータは、JPEG エンコード ファイル内のバイト ストリームになります。
  3. これらのバイトに相当する ASCII には、画像の日付、カメラのモデル名、露出などに関連するさまざまな情報が含まれます。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top