Как я могу прочитать данные EXIF ​​с изображения, сделанного на Apple iPhone - PullRequest
5 голосов
/ 31 января 2010

Как я могу прочитать данные EXIF ​​с изображения, сделанного на Apple iPhone с использованием C #?

Мне нужны данные, связанные с GPS.

PS: я знаю, как читать EXIF, за исключением изображения, полученного с Apple iPhone

Ответы [ 3 ]

8 голосов
/ 31 января 2010

Я бы рекомендовал вам взглянуть на exiflibrary проект в Google Code и связанную с ним ExifLibrary для .NET статью о Code Project.

Он поддерживает более 150 известных тегов EXIF, в том числе 32 связанных с GPS. Получение широты и долготы так же просто, как:

var exif = ExifFile.Read(fileName);
Console.WriteLine(exif.Properties[ExifTag.GPSLatitude]);
Console.WriteLine(exif.Properties[ExifTag.GPSLongitude]);

В нем даже есть небольшое небольшое демонстрационное приложение с интерактивной визуализацией двоичных данных: ExifLibrary demo

2 голосов
/ 10 августа 2015

Библиотека MetadataExtractor доступна для Java с 2002 года и теперь полностью поддерживается для .NET. Он поддерживает данные Exif GPS из файлов JPEG, а также множество других типов метаданных и типов файлов.

Вот примеры вывода с 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);
2 голосов
/ 31 января 2010

Если вы загружаете изображение, используя:

Image image = Image.FromFile(imageName);

Значения EXIF ​​считываются в массив PropertyItems на изображении.

Я нашел некоторый код для интерпретации этих тегов как EXIFданные.Я не могу вспомнить, откуда я его взял, но нашел копию здесь .Я не думаю, что код в его нынешнем виде читает коды геолокации, но эта страница утверждает, что у него есть список всех тегов EXIF, поэтому вы можете расширить этот код.

Идентификатор тега0x8825 - это GPSInfo.Тэги GPS перечислены на этой странице

...