2009-03-05 8 views
9

Est-il possible, dans une application iPhone, d'extraire des informations de localisation (un géocodage, je suppose) de la photo prise avec l'appareil photo de l'iPhone?iPhone - accès aux informations de position à partir d'une photo

S'il n'y a pas d'appel API pour le faire, existe-t-il un moyen connu d'analyser les octets de données pour extraire l'information? Quelque chose que je peux rouler tout seul?

+1

[solution utilisant Photo framework dans ** iOS 8 **] (http://stackoverflow.com/a/33672661/1378447) –

Répondre

6

Malheureusement non.

Le problème est donc:

Un fichier jpeg se compose de plusieurs parties. Pour cette question, ceux qui nous intéressent sont les données d'image et les données exif. Les données d'image sont l'image et les données exif sont là où des choses comme le géocodage, la vitesse d'obturation, le type de caméra et ainsi de suite sont stockés.

Un UIImage (et CGImage) ne contient que des données d'image, pas de tags. Lorsque le sélecteur d'image sélectionne une image (provenant de la bibliothèque ou de l'appareil photo), il renvoie une image UII, et non une image JPEG. Cette UIImage est créée à partir des données d'image jpeg, mais les données exif dans le jpeg sont ignorées.

Cela signifie que ces données ne sont pas du tout UIImage et ne sont donc pas accessibles.

+0

Existe-t-il un moyen connu d'analyser les octets de données pour extraire l'information? Peut-être pas un appel d'API, mais quelque chose que je peux rouler tout seul? – bpapa

+0

Peur pas, j'ai clarifié la réponse pour expliquer pourquoi. –

+0

Ce n'est pas strictement vrai. C'est possible, car certaines applications (telles que Mobile Photos et PixelPipe) semblent pouvoir le gérer. Je n'ai toujours pas trouvé d'exemple de code. – tomtaylor

2

Je pense que la réponse sélectionnée est fausse, en fait. Eh bien, pas mal. Tout ce qu'il dit est correct, mais il y a un moyen de contourner cette limitation. Passe un dictionnaire avec le UIImage il renvoie. L'une des clés est UIImagePickerControllerMediaURL qui est "l'URL du système de fichiers pour le film". Toutefois, comme indiqué here dans les versions iOS plus récentes, il renvoie également une URL pour les images. Ajoutez à cela le exif library mentionné par @Jasper et vous pourriez être en mesure de tirer des géotags hors de photos.

Je n'ai pas essayé cette méthode, mais comme @tomtaylor mentionné, cela doit être possible d'une certaine façon, car il y a quelques applications qui le font. (par exemple Lab).

+0

Quand j'ai essayé ceci (iOS 4.2) il ne retourne pas cette clé - juste UIImagePickerControllerMediaType, UIImagePickerControllerOriginalImage et UIImagePickerControllerReferenceURL, qui était '" assets-library: //asset/asset.jpg? Id = 2317 & ext = jpg "' –

+0

Bon à savoir ... Peut-être que c'était juste là en 3.2? –

+0

Je suis vraiment curieux de savoir comment certains développeurs ont réussi à faire cela ... –

Questions connexes