C# を使用してApple iPhoneで撮影した画像から EXIF データを読み取るにはどうすればよいですか?
GPS関連のデータが必要です。
PS: Apple iPhoneで撮影した画像以外の EXIF の読み方は知っています。
Google Codeのexiflibraryプロジェクトと、それに関連する Code Projectの ExifLibrary for .NET記事を参照することをお勧めします。
32 の GPS 関連のものを含む 150 以上の既知の EXIF タグをサポートします。緯度と経度を取得するのは次のように簡単です。
var exif = ExifFile.Read(fileName);
Console.WriteLine(exif.Properties[ExifTag.GPSLatitude]);
Console.WriteLine(exif.Properties[ExifTag.GPSLongitude]);
バイナリ データをインタラクティブに視覚化する、きちんとした小さなデモ アプリケーションもあります。
MetadataExtractorライブラリは 2002 年から Java で利用でき、現在は .NET で完全にサポートされています。JPEG ファイルからの Exif GPS データをサポートし、他の多くのメタデータ タイプやファイル タイプもサポートしています。
iPhone 4、iPhone 5、およびiPhone 6からの出力の例を次に示します。
NuGet 経由で入手できます。
PM> Install-Package MetadataExtractor
次に、GPS 位置にアクセスするには、次のコードを使用します。
var directories = ImageMetadataReader.ReadMetadata(jpegFilePath);
var gps = directories.OfType<GpsDirectory>().FirstOrDefault();
var location = gps?.GetGeoLocation();
if (location != null)
Console.WriteLine("Lat {0} Lng {1}", location.Latitude, location.Longitude);
または、発見されたすべての値を出力するには:
var lines = from directory in directories
from tag in directory.Tags
select $"{directory.Name}: {tag.TagName} = {tag.Description}";
foreach (var line in lines)
Console.WriteLine(line);
以下を使用して画像をロードする場合:
Image image = Image.FromFile(imageName);
PropertyItems
EXIF 値は、画像の配列に読み込まれます。
これらのタグを EXIF データとして解釈するためのコードを見つけました。どこから入手したかは覚えていませんが、ここにコピーが見つかりました。このままのコードが地理位置情報コードを読み取るとは思いませんが、このページにはすべての EXIF タグのリストがあると主張されているため、このコードを拡張することができます。
タグ ID0x8825
は GPSInfo です。GPSタグはこのページに列挙されています