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

后端 未结 3 1300
無奈伤痛
無奈伤痛 2021-01-06 01:07

How can I read the EXIF data from an image taken with an Apple iPhone using C#?

I need the GPS related data.

PS: I know how to read EXIF exc

相关标签:
3条回答
  • 2021-01-06 01:44

    If you load an image using:

    Image image = Image.FromFile(imageName);
    

    The EXIF values are read into the PropertyItems array on the image.

    I found some code for interpreting these tags as EXIF data. I can't remember where I got it from now but I've found a copy here. I don't think that the code as it stands reads the geolocation codes, but this page claims to have a list of all EXIF tags, so you could extend this code.

    Tag id 0x8825 is the GPSInfo. The GPS tags are enumerated on this page

    0 讨论(0)
  • 2021-01-06 01:47

    The MetadataExtractor library has been available for Java since 2002 and is now fully supported for .NET. It supports Exif GPS data from JPEG files, along with a tonne of other metadata types and file types.

    Here are examples of the output from an iPhone 4, iPhone 5 and an iPhone 6.

    It's available via NuGet:

    PM> Install-Package MetadataExtractor
    

    Then, to access the GPS location, use the following code:

    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);
    

    Or to print out every single discovered value:

    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);
    
    0 讨论(0)
  • 2021-01-06 02:00

    I would recommend you take a look at the exiflibrary project on Google Code and its associated ExifLibrary for .NET article on Code Project.

    It supports over 150 known EXIF tags including 32 GPS related ones. Getting the latitude and longitude is as easy as:

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

    It even has a neat little demo application with an interactive visualization of the binary data: ExifLibrary demo

    0 讨论(0)
提交回复
热议问题