Lesen der GPS-Daten aus dem von der Kamera in iOS iphone zurückgegebenen Bild
Ich muss die GPS-Koordinaten eines Bildes ermitteln, das mit der Kamera des iOS-Geräts aufgenommen wurde. Die Camera Roll-Bilder interessieren mich nicht, nur das mit UIImagePickerControllerSourceTypeCamera aufgenommene Bild.
Ich habe viele Stackoverflow-Antworten gelesen, wieAbrufen von Exif-Daten von UIImage - UIImagePickerControllerDies setzt voraus, dass Sie das AssetsLibrary-Framework verwenden, das anscheinend nicht für Kamerabilder geeignet ist, oder dass Sie CoreLocaiton verwenden, um den Längen- / Breitengrad von der App selbst und nicht vom Bild abzurufen.
CoreLocation verwendenist keine Option. Das gibt mir nicht die Koordinaten, als der Auslöser gedrückt wurde. (Bei CoreLocation-basierten Lösungen müssen Sie die Koordinaten entweder vor oder nach dem Aufrufen der Kameraansicht aufzeichnen. Wenn sich das Gerät bewegt, sind die Koordinaten natürlich falsch. Diese Methode sollte bei einem stationären Gerät funktionieren.)
Ich bin nur iOS5, daher muss ich ältere Geräte nicht unterstützen. Dies ist auch für ein kommerzielles Produkt, das ich nicht verwenden kannhttp://code.google.com/p/iphone-exif/.
Welche Möglichkeiten habe ich, um die GPS-Daten aus dem von der Kamera in iOS5 zurückgegebenen Bild zu lesen? Alles, woran ich jetzt denken kann, ist, das Bild in Camera Roll zu speichern und dann die AssetsLibrary zu verwenden, aber das scheint hokey.
Vielen Dank!
Hier ist der Code, den ich basierend auf Calebs Antwort geschrieben habe.
<code> UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; NSData *jpeg = UIImageJPEGRepresentation(image,1.0); CGImageSourceRef source ; source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL); NSDictionary *metadataNew = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL); NSLog(@"%@",metadataNew); </code>
und meine Konsole zeigt:
<code> 2012-04-26 14:15:37:137 ferret[2060:1799] { ColorModel = RGB; Depth = 8; Orientation = 6; PixelHeight = 1936; PixelWidth = 2592; "{Exif}" = { ColorSpace = 1; PixelXDimension = 2592; PixelYDimension = 1936; }; "{JFIF}" = { DensityUnit = 0; JFIFVersion = ( 1, 1 ); XDensity = 1; YDensity = 1; }; "{TIFF}" = { Orientation = 6; }; } </code>
Kein Breitengrad / Längengrad.