2015-07-08 2 views
0

Я могу получить информацию о местоположении из фотоальбома на ios, но я хотел бы получить доступ к местоположению изображения (широта и долгота), когда я сделал снимок.Доступ Gelocation от UIImage

так это изображение законченного событие

public override void FinishedPickingMedia(UIImagePickerController picker, NSDictionary info) 
    { 
     //UIImagePickerController.ReferenceUrl 
     var originalImage = new NSString("UIImagePickerControllerOriginalImage"); 
     var image = (UIImage)info[originalImage]; 
       foreach (var item in info) 
       Console.WriteLine(item.Key + " " + item.Value); 


     image.SaveToPhotosAlbum(delegate(UIImage img, NSError err) 
     { 
      Console.WriteLine("Saved!"); 

     }); 


     _dp.DismissModalViewController(true); 

     OnImageChoosed(image); 
    } 
} 

и в информационном словаре, я могу видеть этих свойства

UIImagePickerControllerMediaMetadata { 
    DPIHeight = 72; 
    DPIWidth = 72; 
    Orientation = 6; 
    "{Exif}" =  { 
     ApertureValue = "2.27500704749987"; 
     BrightnessValue = "5.267792568433492"; 
     ColorSpace = 1; 
     DateTimeDigitized = "2015:07:08 14:24:15"; 
     DateTimeOriginal = "2015:07:08 14:24:15"; 
     ExposureBiasValue = 0; 
     ExposureMode = 0; 
     ExposureProgram = 2; 
     ExposureTime = "0.008333333333333333"; 
     FNumber = "2.2"; 
     Flash = 24; 
     FocalLenIn35mmFilm = 29; 
     FocalLength = "4.15"; 
     ISOSpeedRatings =   (
      40 
     ); 
     LensMake = Apple; 
     LensModel = "iPhone 6 back camera 4.15mm f/2.2"; 
     LensSpecification =   (
      "4.15", 
      "4.15", 
      "2.2", 
      "2.2" 
     ); 
     MeteringMode = 5; 
     PixelXDimension = 3264; 
     PixelYDimension = 2448; 
     SceneType = 1; 
     SensingMethod = 2; 
     ShutterSpeedValue = "6.908853996279415"; 
     SubjectArea =   (
      1631, 
      1223, 
      1795, 
      1077 
     ); 
     SubsecTimeDigitized = 927; 
     SubsecTimeOriginal = 927; 
     WhiteBalance = 0; 
    }; 
    "{MakerApple}" =  { 
     1 = 2; 
     14 = 0; 
     2 = <af001d01 9001ed01 9e011f01 70001500 41000d00 0a001000 12000900 0e000e00 b5003201 ae01f701 9b010401 5b001400 47002300 11001500 15000800 0d000d00 c2005501 eb014402 c901d900 67002400 3d002400 0f000b00 08000900 0d000d00 f1009201 30028e02 ff01b200 51000e00 43000e00 0d000e00 0d000d00 0c000b00 2d02b302 f802e902 26029700 80005600 5e000e00 0b000a00 09000900 0a000900 88039703 87033503 3c028300 44001100 45001100 0c000d00 0d000d00 0d000a00 b903b103 97034703 44027700 3e001000 38001000 0d000d00 0e000d00 0d000a00 a4039f03 87031503 22026d00 38000b00 34001000 0d001000 12000b00 0b000900 7b036a03 1d039c02 e2016400 37000e00 32001100 0d000a00 0a000600 07000700 c0029a02 4e02fb01 79015b00 36000e00 31001200 0c000900 0a000700 0c000b00 8b017801 4b013501 01015500 34000a00 30000900 06000c00 0e000800 14001000 b9001a00 34008a00 bd005000 2f000c00 2f000c00 0c000b00 0d000500 07000700 60000e00 0c002400 8f004b00 2f000a00 2d000f00 0e000700 07000700 0b000a00 47000b00 0a000b00 3d003300 28000a00 2b000a00 06000a00 0e000700 12001000 29000a00 09000a00 25003b00 2a000e00 2a000c00 0b000e00 11000700 0a000c00 27000a00 08000a00 0f003f00 3f001b00 31000d00 0e000700 07000700 0a000800>; 
     3 =   { 
      epoch = 0; 
      flags = 1; 
      timescale = 1000000000; 
      value = 401611073225666; 
     }; 
     4 = 1; 
     5 = 128; 
     6 = 119; 
     7 = 1; 
     8 =   (
      "0.01929908", 
      "-0.713904", 
      "-0.7083461" 
     ); 
    }; 
    "{TIFF}" =  { 
     DateTime = "2015:07:08 14:24:15"; 
     Make = Apple; 
     Model = "iPhone 6"; 
     Software = "8.3"; 
     XResolution = 72; 
     YResolution = 72; 
    }; 

Как вы видите, нет информации местоположения. Ну, я попытался сохранить изображение на локальном компьютере после получения информации о местоположении, но не работал.

Как я понимаю, если я могу получить путь к изображению, которое сохраняется на фотоальбом, я получил

var path = args.Info[UIImagePickerController.ReferenceUrl].ToString(); 

refeenceURL как выше, и после того, как я могу получить место .. Но я не знаю, как чтобы получить путь к вновь сохраненному изображению.

P.S .: Я использовал Xamarin.iOS с C#, но не имеет значения, если вы предоставляете объективный C или быстрый код.

ответ

1

У меня есть старый фрагмент, который я никогда не использовал (его категория NSMutableDictionary), потому что в приложении я использовал AVFoundation, но стоит попробовать. Кредиты создателю этого кода Густаво Амброзио.
Поскольку вы действительно старо, вам следует адаптироваться для совместимости с ARC.

- (id)initWithInfoFromImagePicker:(NSDictionary *)info { 

    if ((self = [self init])) { 

     // Key UIImagePickerControllerReferenceURL only exists in iOS 4.1 
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.1f) { 

      NSURL* assetURL = nil; 
      if ((assetURL = [info objectForKey:UIImagePickerControllerReferenceURL])) { 

       ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
       [library assetForURL:assetURL 
         resultBlock:^(ALAsset *asset) { 
          NSDictionary *metadata = asset.defaultRepresentation.metadata; 
          [self addEntriesFromDictionary:metadata]; 
         } 
         failureBlock:^(NSError *error) { 
         }]; 
       [library autorelease]; 
      } 
      else { 
       NSDictionary *metadata = [info objectForKey:UIImagePickerControllerMediaMetadata]; 
       if (metadata) 
        [self addEntriesFromDictionary:metadata]; 
      } 
     } 
    } 

    return self; 
} 
+1

Спасибо @ Andrea, я решил почти так же. – ertan2002

Смежные вопросы