2010-01-30 19 views
5

C# kullanarak Apple iPhone ile çekilen bir görüntüden EXIF ​​verilerini nasıl okuyabilirim?Bir Apple iPhone ile çekilen bir görüntüden EXIF ​​verilerini nasıl okuyabilirim?

GPS ile ilgili verilere ihtiyacım var.

PS:

Image image = Image.FromFile(imageName); 

EXIF ​​değerleri üzerinde PropertyItems diziye okunan: Sana kullanarak bir resim yüklerseniz bir Apple iPhone

+0

Bu sorunu çözdünüz mü? Aynı problemim var. Apple, PropertyTagGpsLatitude = 0x0002 ve PropertyTagGpsLongitude = 0x0004 :( – andySF

cevap

2

ile çekilen görüntüde hariç EXIF ​​okumayı biliyorum görüntüsü.

Bu etiketleri EXIF ​​verileri olarak yorumlamak için bazı kodlar buldum. Nereden aldığımı hatırlayamıyorum ama here numaralı kopyasını buldum. Kodun, bulunduğu konumdaki coğrafi konum kodlarını okuduğunu sanmıyorum, ancak this page, tüm EXIF ​​etiketlerinin bir listesini aldığını iddia ediyor, bu nedenle bu kodu genişletebilirsiniz.

Etiket numarası 0x8825, GPSInfo'dir. GPS etiketleri this page

+0

teşekkürler, teşekkürler, ancak iphone bu etiketleri kullanmıyor gibi görünüyor. – zunyite

8

numaralarında numaralandırılmıştır. Kod Projesi hakkındaki Google Code ve ilgili ExifLibrary for .NET makalesinde bulunan exiflibrary projesine bir göz atmanızı öneririz.

32 GPS ile ilgili olanlar da dahil olmak üzere 150'den fazla bilinen EXIF ​​etiketini destekler. enlem ve boylam alma kadar kolaydır: hatta ikili verilerin bir interaktif görselleştirme düzgün bir küçük demo uygulaması vardır O

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

: ExifLibrary demo

+0

Demoyu deniyorum, ancak bir görüntü ile çekilen bir görüntünün EXIF ​​dosyasını okuyamaz. Apple iPhone " – zunyite

+0

Kod Projesi'nin eski bir sürüm olduğunu düşünüyorum. Google Code’dan en son sürümüne (v0.9) karşı demo uygulamasını derlemeyi denemelisiniz. –

+0

v0.9 IPhone’un resminden GPS EXIF ​​verilerini ayıklayamıyorsunuz – zunyite

2

MetadataExtractor kütüphane Java için kullanılabilir olmuştur 2002'den beri ve şimdi tamamen .NET için destekleniyor. Diğer meta veri türleri ve dosya türleri ile birlikte JPEG dosyalarından Exif GPS verilerini destekler.

iPhone 4, iPhone 5 ve iPhone 6'dan gelen çıktı örnekleri.

O Nuget yoluyla ulaşılabilir var:

PM> Install-Package MetadataExtractor 

Ardından kullanmak, aşağıdaki kodu GPS konumunu erişmek için:

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

Veya her keşfedilen değerini yazdırmak için:

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); 
İlgili konular