私はjpegの写真を通過する小さなプログラムをC#で作成したいと思います。例えば、日付を記入した慣習を使用してください。 )。C#を使用してファイルからEXIFデータを取得する方法
誰も、日付と時間、露出などのEXIFデータをプログラマチックに取得する比較的簡単な方法を知っていますか? ありがとう! JPEG画像からEXIFデータを取得
私はjpegの写真を通過する小さなプログラムをC#で作成したいと思います。例えば、日付を記入した慣習を使用してください。 )。C#を使用してファイルからEXIFデータを取得する方法
誰も、日付と時間、露出などのEXIFデータをプログラマチックに取得する比較的簡単な方法を知っていますか? ありがとう! JPEG画像からEXIFデータを取得
が含ま:EXIFデータの先頭に言及JPEGマーカーに探している
ImageクラスはPropertyItemsとPropertyIdList特性を有する...画像の日付、カメラモデル名、露出などに関連する様々な情報が含まれています。あなたはそれらを使うことができます。
それは、読み取り専用なので、私は新しい画像に追加することはできません... – TigrouMeow
新しい画像にImage.SetPropertyItem(PropertyItem)関数を使用します。 –
これをチェックアウトするmetadata extractor
これはJavaで書かれていますが、C#にも移植されています。
私は日付とモデルのタグに基づいて私のjpegファイルの名前を変更するための小さなユーティリティを記述するために、Javaのバージョンを使用しています。非常に使いやすい。
EDITメタデータ抽出はあまりに.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とcode's on GitHubで利用可能です。
ここに別のsimilar SO questionへのリンクがあります。これは、.netの"Reading, writing and photo metadata"のこの良い記事を指し示す答えを持っています。
[ExifLib - A Fast Exif Data Extractor for .NET 2.0 +]を指す**非常に良い回答** [ここにあります](https://stackoverflow.com/q/10494796/2803565)(https ://www.codeproject.com/Articles/36342/ExifLib-A-Fast-Exif-Data-Extractor-for-NET-2-0) –
提案したように、サードパーティのライブラリを使用することも、手作業で行うこともできますが、これはあまり効果的ではありませんが、最も簡単で柔軟な方法はおそらく.NETの組み込み機能を使用することです。より参照してください:
また、プロパティリストは実際にはEXIF値に直接対応していないことを指摘しておきます。 EXIF自体は複数のテーブルに重複するIDで格納されますが、.NETはすべてを1つのリストに置き、いくつかのアイテムのIDを再定義します。しかし、正確なEXIF IDについて気にしない限り、.NETマッピングでうまくいくはずです。
Bitmap.PropertyItemsにアクセスするには、ファイル全体をメモリに読み込む必要があります。 Bitmapを作成してPropertyItemsにアクセスして何もしない場合は、XPerfを使用してアプリがイメージファイルにアクセスし、そのすべてをメモリに読み込むことができます。私のコンピュータの場合、3.4Mbのファイルは、PropertyItems経由でEXIFを取得するために、> 700ms以上のIOを必要とします:(。 – Tristan
これと比較して、PicasaのPhotoViewerはタッチする各ファイルからわずか20〜30kを読み込みます。 – Tristan
@Tristan:有用な情報ですが、イメージ自体も必要とせずにイメージメタデータにアクセスする頻度はどれくらいですか?(このデータは、XPerfを使用してPhotoViewerのスタートアップをプロファイリングして収集したものです。私は確かにいくつかのケースがあると確信していますが、大部分のケースでは、画像を表示する(またはそれ以外の方法でデータを扱う)と同時にメタデータがあると思います。 – jrista
コマンドラインツールExifTool by Phil Harveyは、数多くの独自のRAW形式を含む数十の画像形式で動作し、EXIF、GPS、IPTC、XMP、JFIFなどのさまざまなメタデータ形式を操作できます。
非常に使いやすく、軽量で印象的なアプリケーションです。
ExifToolは素晴らしいlib/toolですが、Perlで書かれているので、C#からそれを使用すると外部プロセスを起動する必要があります。 –
イメージメタデータに対するBCLのビルトインサポートは非常に限定されています。私は2002年からExifなどのメタデータを使って作業しており、シンプルで強力な[.NET用のデータを抽出するライブラリ](https://github.com/drewnoakes/metadata-extractor-dotnet)を持っています。 –