2010-01-30 59 views
5

Làm cách nào để đọc dữ liệu EXIF ​​từ hình ảnh được chụp bằng Apple iPhone bằng C#?Làm cách nào để đọc dữ liệu EXIF ​​từ một hình ảnh được chụp bằng iPhone của Apple

Tôi cần dữ liệu liên quan đến GPS.

PS: Tôi biết làm thế nào để đọc EXIF ​​trừ hình ảnh chụp với một Apple iPhone

+0

Bạn đã giải quyết vấn đề này chưa? Tôi có cùng một vấn đề. Apple không lưu trong PropertyTagGpsLatitude = 0x0002 và PropertyTagGpsLongitude = 0x0004 :( – andySF

Trả lời

2

Nếu bạn tải một hình ảnh sử dụng:

Image image = Image.FromFile(imageName); 

Các giá trị EXIF ​​được đọc vào PropertyItems mảng trên hình ảnh.

Tôi đã tìm thấy một số mã để diễn giải các thẻ này dưới dạng dữ liệu EXIF. Tôi không thể nhớ mình đã lấy nó từ đâu nhưng tôi đã tìm thấy một bản sao here. Tôi không nghĩ rằng mã như nó đứng đọc mã định vị địa lý, nhưng this page tuyên bố có danh sách tất cả các thẻ EXIF, vì vậy bạn có thể mở rộng mã này.

Id thẻ 0x8825 là GPSInfo. Các thẻ GPS được liệt kê trên this page

+0

cảm ơn, nhưng có vẻ như iphone không sử dụng các thẻ này. – zunyite

8

Tôi khuyên bạn nên xem dự án exiflibrary trên Google Code và bài viết có liên quan ExifLibrary for .NET về Dự án mã.

Hỗ trợ hơn 150 thẻ EXIF ​​đã biết bao gồm 32 thẻ liên quan đến GPS. Bắt vĩ độ và kinh độ là dễ dàng như:

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

Nó thậm chí còn có một ứng dụng demo nhỏ gọn với một hình dung tương tác của các dữ liệu nhị phân: ExifLibrary demo

+0

Tôi thử bản trình diễn nhưng không thể đọc EXIF ​​của hình ảnh được chụp bằng " Apple iPhone " – zunyite

+0

Tôi nghĩ bản demo từ Dự án mã là phiên bản cũ hơn. Bạn nên thử biên dịch ứng dụng bản trình diễn dựa trên bản phát hành mới nhất (v0.9) từ Google Code. –

+0

v0.9 không thể trích xuất dữ liệu GPS EXIF ​​từ hình ảnh của iPhone – zunyite

2

Các MetadataExtractor thư viện đã sẵn sàng cho Java từ năm 2002 và hiện được hỗ trợ đầy đủ cho .NET. Nó hỗ trợ dữ liệu Exif GPS từ các tệp JPEG, cùng với rất nhiều loại siêu dữ liệu và loại tệp khác.

Dưới đây là ví dụ về đầu ra từ một số iPhone 4, iPhone 5iPhone 6.

Nó có sẵn thông qua NuGet:

PM> Install-Package MetadataExtractor 

Sau đó, để truy cập vào vị trí GPS, sử dụng đoạn mã sau:

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

Hoặc để in ra tất cả các giá trị phát hiện duy nhất:

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); 
Các vấn đề liên quan