2009-03-05 20 views
9

¿Es posible, en una aplicación de iPhone, extraer información de ubicación (geocodificación, supongo que se llama) de una foto tomada con la cámara del iPhone?iPhone: accede a la información de ubicación desde una foto

Si no hay una llamada de API para hacerlo, ¿hay alguna forma conocida de analizar los bytes de datos para extraer la información? Algo que puedo rodar por mi cuenta?

+1

[solución utilizando Photo framework en ** iOS 8 **] (http://stackoverflow.com/a/33672661/1378447) –

Respuesta

6

Desafortunadamente no.

El problema es así;

Un archivo jpeg consta de varias partes. Para esta pregunta, los que nos interesan son los datos de imagen y los datos exif. Los datos de imagen son la imagen y los datos exif son donde se guardan cosas como geocodificación, velocidad de obturación, tipo de cámara, etc.

Un UIImage (y CGImage) solo contiene datos de imagen, no etiquetas.

Cuando el selector de imágenes selecciona una imagen (ya sea de la biblioteca o de la cámara) devuelve un UIImage, no un jpeg. Este UIImage se crea a partir de los datos de imagen jpeg, pero los datos exif en el jpeg se descartan.

Esto significa que estos datos no están en el UIImage del todo y por lo tanto no son accesibles.

+0

¿Hay alguna forma conocida de analizar los bytes de datos para extraer la información? Tal vez no sea una llamada API, ¿pero algo que pueda rodar por mi cuenta? – bpapa

+0

Miedo no, he aclarado la respuesta para explicar por qué. –

+0

Esto no es estrictamente cierto. Es posible, ya que algunas aplicaciones (como Mobile Photos y PixelPipe) parecen ser capaces de administrarlo. Todavía no he encontrado ningún código de muestra. – tomtaylor

2

Creo que la respuesta seleccionada es incorrecta, en realidad. Bueno, no está mal. Todo lo que dijo es correcto, pero hay una forma de evitar esa limitación.

UIImagePickerController pasa un diccionario junto con el UIImage que devuelve. Una de las claves es UIImagePickerControllerMediaURL que es "la URL del sistema de archivos para la película". Sin embargo, como se indica en here en las versiones más recientes de iOS, también devuelve una url para las imágenes. Aúna eso con el exif library mencionado por @Jasper y es posible que puedas sacar etiquetas geográficas de las fotos.

No he probado este método, pero como se menciona @tomtaylor, esto tiene que ser posible de alguna manera, ya que hay algunas aplicaciones que lo hacen. (por ejemplo, Lab).

+0

Cuando probé esto (iOS 4.2) no devuelve esa clave - solo UIImagePickerControllerMediaType, UIImagePickerControllerOriginalImage y UIImagePickerControllerReferenceURL, que era '" assets-library: //asset/asset.jpg? Id = 2317 & ext = jpg "' –

+0

Qué bueno saber ... ¿Tal vez estaba allí en 3.2? –

+0

Tengo mucha curiosidad por cómo algunos desarrolladores lograron hacer esto ... –

Cuestiones relacionadas