Odczytywanie danych GPS z obrazu zwróconego przez aparat w telefonie iOS

Muszę uzyskać współrzędne GPS obrazu zrobionego aparatem urządzenia z systemem iOS. Nie obchodzą mnie obrazy z rolki aparatu, tylko obraz zrobiony za pomocą UIImagePickerControllerSourceTypeCamera.

Przeczytałem wiele odpowiedzi na temat stackoverflow, takich jakUzyskaj dane Exif z UIImage - UIImagePickerController, która zakłada, że ​​używasz struktury AssetsLibrary, która nie działa na obrazach z kamer, lub użyj CoreLocaiton, aby uzyskać szerokość / długość geograficzną od samej aplikacji, a nie od obrazu.

Korzystanie z CoreLocationnie jest opcją. To nie da mi współrzędnych po naciśnięciu przycisku migawki. (W przypadku rozwiązań opartych na CoreLocation musisz albo nagrać kable przed wyświetleniem widoku kamery lub później, a oczywiście, jeśli urządzenie porusza się, współrzędne będą nieprawidłowe. Ta metoda powinna działać z urządzeniem stacjonarnym).

Jestem tylko iOS5, więc nie muszę obsługiwać starszych urządzeń. Dotyczy to również produktu komercyjnego, więc nie mogę z niego korzystaćhttp://code.google.com/p/iphone-exif/.

Jakie są więc opcje odczytu danych GPS z obrazu zwróconego przez aparat w iOS5? Jedyne, co mogę teraz pomyśleć, to zapisać obraz w rolce aparatu, a następnie użyć biblioteki AssetsLibrary, ale to wydaje się hokey.

Dzięki!

Oto kod, który napisałem na podstawie odpowiedzi Caleba.

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

a moja konsola pokazuje:

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

Brak szerokości i długości geograficznej.

questionAnswers(9)

yourAnswerToTheQuestion