2009-03-05 5 views
9

Ist es in einer iPhone-App möglich, Standortinformationen (Geocode, wie es heißt) von einem mit der iPhone-Kamera aufgenommenen Foto zu extrahieren?iPhone - Zugriff auf Standortinformationen von einem Foto

Wenn es keinen API-Aufruf gibt, um es zu tun, gibt es eine bekannte Möglichkeit, die Datenbytes zu analysieren, um die Informationen zu extrahieren? Etwas, das ich allein rollen kann?

+1

[Lösung mit Photo-Framework in ** iOS 8 **] (http://Stackoverflow.com/a/33672661/1378447) –

Antwort

6

Leider nicht.

Das Problem ist also;

Eine JPEG-Datei besteht aus mehreren Teilen. Für diese Frage interessieren uns die Bilddaten und die Exif-Daten. Die Bilddaten sind das Bild und die Exif-Daten sind wo Geocoding, Verschlusszeit, Kameratyp und so weiter gespeichert sind.

Ein UIImage (und CGImage) enthalten nur Bilddaten, keine Tags.

Wenn der Bildwähler ein Bild auswählt (entweder aus der Bibliothek oder der Kamera), wird ein UII-Bild zurückgegeben, nicht ein JPEG. Dieser UIImage wird aus den JPEG-Bilddaten erstellt, aber die Exif-Daten in der JPEG-Datei werden verworfen.

Dies bedeutet, dass diese Daten nicht im UIImage überhaupt sind und daher nicht zugänglich sind.

+0

Gibt es eine bekannte Möglichkeit, die Datenbytes zu analysieren, um die Informationen zu extrahieren? Vielleicht kein API-Aufruf, aber etwas, das ich alleine machen kann? – bpapa

+0

Angst nicht, ich habe die Antwort erklärt, warum. –

+0

Dies ist nicht streng zutreffend. Es ist möglich, da einige Anwendungen (wie Mobile Photos und PixelPipe) in der Lage sind, es zu verwalten. Ich habe jedoch noch keinen Beispielcode gefunden. – tomtaylor

2

Ich denke, die ausgewählte Antwort ist eigentlich falsch. Nun, nicht falsch. Alles, was es gesagt hat, ist richtig, aber es gibt einen Weg um diese Einschränkung.

UIImagePickerController übergibt ein Wörterbuch zusammen mit der UIImage es zurückgibt. Einer der Schlüssel ist UIImagePickerControllerMediaURL, der "die Dateisystem-URL für den Film" ist. Wie jedoch here in neueren iOS-Versionen notiert, gibt es auch eine URL für Bilder zurück. Verbinden Sie das mit dem von @Jasper erwähnten exif library und Sie könnten Geotags aus Fotos ziehen.

Ich habe diese Methode nicht ausprobiert, aber wie @tomtaylor schon erwähnt, muss das irgendwie möglich sein, da es ein paar Apps gibt, die es tun. (z.B. Lab).

+0

Wenn ich dies (iOS 4.2) versuchte, gibt es diesen Schlüssel nicht zurück - nur UIImagePickerControllerMediaType, UIImagePickerControllerOriginalImage und UIImagePickerControllerReferenceURL, das war "" assets-library: //asset/asset.jpg? Id = 2317 & ext = jpg "' –

+0

Gut zu wissen ... Vielleicht war es nur in 3.2? –

+0

Ich bin ernsthaft neugierig, wie einige Entwickler das geschafft haben ... –