Чтение данных GPS из изображения, возвращенного камерой в iOS iphone

Мне нужно получить 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, но это кажется ерундой.

Спасибо!


Вот код, который я написал на основе ответа Калеба.

    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;
        };
    }

Нет широты/долготы.

35
задан Community 23 May 2017 в 12:26
поделиться