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.
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);
e meu console mostra:
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;
};
}
Sem latitude / longitude