Lendo os dados do GPS da imagem retornada pela câmera no iPhone do iOS
Preciso obter as coordenadas de GPS de uma imagem tirada com a câmera do dispositivo iOS. Eu não me importo com as imagens do rolo da câmera, apenas a imagem tirada com UIImagePickerControllerSourceTypeCamera.
Eu li muitas respostas do stackoverflow, comoObter dados Exif da UIImage - UIImagePickerController, que pressupõe que você está usando a estrutura AssetsLibrary, que parece não funcionar nas imagens da câmera, ou usa o CoreLocaiton para obter a latitude / longitude do próprio aplicativo, não da imagem.
Usando CoreLocationnão é uma opção. Isso não me dará as coordenadas quando o botão do obturador foi pressionado. (Com as soluções baseadas em CoreLocation, você precisa registrar as coordenadas antes de exibir a câmera ou depois, e, claro, se o dispositivo estiver se movendo, as coordenadas estarão erradas. Esse método deve funcionar com um dispositivo estacionário.)
Sou apenas iOS5, por isso não preciso de suportar dispositivos mais antigos. Isso também é para um produto comercial, então não posso usarhttp://code.google.com/p/iphone-exif/.
Então, quais são as minhas opções para ler os dados do GPS da imagem retornada pela câmera no iOS5? Tudo o que posso pensar agora é salvar a imagem no Camera Roll e depois usar a AssetsLibrary, mas isso parece absurdo.
Obrigado!
Aqui está o código que eu escrevi baseado na resposta do Caleb.
<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>
e meu console mostra:
<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>
Sem latitude / longitude