簡體   English   中英

如何從Apple iPhone拍攝的圖像中讀取EXIF數據

[英]How can I read the EXIF data from an image taken with an Apple iPhone

如何從使用C#的Apple iPhone拍攝的圖像中讀取EXIF數據?

我需要GPS相關數據。

PS:除了使用Apple iPhone拍攝的圖像外,我知道如何閱讀EXIF

我建議你看一下關於Code Code的Google Code上的exiflibrary項目及其相關的ExifLibrary for .NET文章。

它支持150多種已知的EXIF標簽,包括32種GPS相關標簽。 獲得經度和經度就像:

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

它甚至還有一個簡潔的小型演示應用程序,它具有二進制數據的交互式可視化: ExifLibrary演示

如果您使用以下方式加載圖像:

Image image = Image.FromFile(imageName);

EXIF值被讀入圖像上的PropertyItems數組。

我發現了一些用於將這些標簽解釋為EXIF數據的代碼。 我不記得從現在開始我在哪里,但我在這里找到了一份副本。 我不認為它所代表的代碼會讀取地理定位代碼,但是此頁面聲稱有一個所有EXIF標記的列表,因此您可以擴展此代碼。

標簽ID 0x8825是GPSInfo。 GPS標簽在此頁面上列舉

MetadataExtractor庫自2002年起可用於Java,現在完全支持.NET。 它支持JPEG文件中的Exif GPS數據,以及一系列其他元數據類型和文件類型。

以下是iPhone 4iPhone 5iPhone 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM