La lecture des données GPS à partir de l'image renvoyée par la caméra dans iOS iphone

J'ai besoin d'obtenir les coordonnées GPS d'une image prise avec l'appareil iOS de l'appareil photo. Je ne m'inquiète pas à propos de la pellicule d'images, juste de l'image prise avec UIImagePickerControllerSourceTypecamera.

J'ai lu beaucoup de stackoverflow réponses, comme Obtenir les données Exif des UIImage - UIImagePickerController, qui suppose que vous utilisez le AssetsLibrary cadre, ce qui ne semble pas fonctionner sur les images de la caméra, ou de l'utilisation CoreLocaiton pour obtenir la latitude et de la longitude à partir de l'application elle-même, et pas à partir de l'image.

À l'aide de CoreLocation n'est pas une option. Qui ne veut pas me donner les coordonnées lorsque le déclencheur a été enfoncé. (Avec la CoreLocation des solutions basées sur, vous avez besoin soit d'enregistrer les coordonnées avant de l'amener jusqu'à la vue de la caméra ou après, et bien sûr, si l'appareil est en mouvement, les coordonnées seront fausses. Cette méthode devrait fonctionner avec un appareil stationnaire.)

Je suis iOS5 seulement, je n'ai pas besoin de soutenir les anciens appareils. C'est aussi un produit commercial donc je ne peut pas utiliser http://code.google.com/p/iphone-exif/.

Alors, quelles sont mes options pour la lecture des données GPS à partir de l'image renvoyée par la caméra dans iOS5? Tout ce que je peux penser est d'enregistrer l'image sur pellicule, puis utiliser la AssetsLibrary, mais qui semble à l'eau de rose.

Merci!


Voici le code que j'ai écrit basé sur Caleb réponse.

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

et ma Console affiche:

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

Aucune latitude/longitude.

  • Vous avez trouvé la bonne réponse? Comment avez-vous résoudre ce problème? Je ne veux pas utiliser CoreLocation ni ce cadre, code.google.com/p/iphone-exif . Est-ce la seule solution pour sauver de la bobine de la caméra, puis l'extraire avec les données gps?
InformationsquelleAutor Paul Cezanne | 2012-04-24