Мне нужно получить координаты GPS изображения, снятого с камерой устройства iOS. Мне не нравятся изображения Camera Roll, просто изображение, сделанное с помощью UIImagePickerControllerSourceTypeCamera.
Я прочитал много ответов stackoverflow, например Получить данные Exif из UIImage - UIImagePickerController, в котором предполагается, что вы используете инфраструктуру AssetsLibrary, которая, похоже, не работать с изображениями с камеры или использовать CoreLocaiton для получения широты/долготы из самого приложения, а не из изображения.
Использование CoreLocation не является вариантом. Это не даст мне координаты при нажатии кнопки спуска затвора. (При использовании решений на базе CoreLocation вам нужно либо записать координаты, прежде чем вы откроете представление камеры или после, и, конечно, если устройство движется, координаты будут неправильными. Этот метод должен работать со стационарным устройством.)
Я только iOS5, поэтому мне не нужно поддерживать старые устройства. Это также для коммерческого продукта, поэтому я не могу использовать http://code.google.com/p/iphone-exif/.
Итак, каковы мои возможности для чтения данных GPS с изображения, возвращаемого камерой в iOS5? Все, что я могу сейчас подумать, это сохранить изображение в Camera Roll, а затем использовать AssetsLibrary, но это кажется hokey.
Спасибо!
Вот код, который я написал на основе ответа Калеба.
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);
и моя консоль показывает:
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;
};
}
Нет широты/долготы.