2010-10-21 7 views
6

È possibile accedere ai metadati di un'immagine acquisita da UIImagePickerController in iOS? Capisco che questo può essere fatto con AssetLibrary framework per le immagini catturate dall'applicazione della fotocamera (o altrimenti presenti nella libreria fotografica di iPhone), ma può uno sviluppatore accedere a qualsiasi informazione sui metadati/exif all'interno di un'applicazione subito dopo che un utente ha preso una immagine? Sto cercando qualsiasi tipo di informazioni sul livello di esposizione della fotocamera da un'immagine dopo che è stata scattata. Grazie!Accesso ai metadati (tag exif) dell'immagine scattata da UIImagePickerController - iOS/iPhone

+0

Exif è un pezzo di dati formattati in tiff contenuto all'interno di un marker JPEG. Quindi, se hai accesso al file immagine grezzo, puoi analizzarlo e leggerlo. –

risposta

5

Apparentemente, è possibile accedere ai metadati di un'immagine subito dopo che è stata scattata. Il metodo di protocollo che viene chiamato dal sistema dopo aver selezionato un'immagine è:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 

L'argomento NSDictionary, informazioni, contiene una chiave: UIImagePickerControllerMediaMetadata

Ora, se io riesco a capire come ottenere l'exif tag o qualsiasi informazione a livello di esposizione da questo per inferire le informazioni di base sul livello di luce sarò felice. :)

+0

È possibile utilizzare un CLLocationManager per ottenere la posizione corrente e geotaggarla. – nonamelive

+1

Si noti che funziona solo quando si acquisisce l'immagine dalla fotocamera e si utilizza UIImagePickerController. –

0

aggiornati a iOS 11 con le foto quadro

Obiettivo - C:

#import <Photos/Photos.h> 

- (void)imagePickerController:(UIImagePickerController *)imagePicker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info { 

    PHAsset* asset = info[UIImagePickerControllerPHAsset]; 

    [asset requestContentEditingInputWithOptions:nil completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { 
     CIImage *fullImage = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL]; 

     NSLog(@"%@", fullImage.properties.description); 
    }]; 

    [imagePicker dismissViewControllerAnimated:YES completion:nil]; 
} 

È inoltre necessario il permesso della Fototeca Usage (NSPhotoLibraryUsageDescription) ed allora può aggiungere il seguente codice visualizzava caricato o visualizzava

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { 
    switch (status) { 
     case PHAuthorizationStatusAuthorized: 
      NSLog(@"PHAuthorizationStatusAuthorized"); 
      break; 
     case PHAuthorizationStatusDenied: 
      NSLog(@"PHAuthorizationStatusDenied"); 
      break; 
     case PHAuthorizationStatusNotDetermined: 
      NSLog(@"PHAuthorizationStatusNotDetermined"); 
      break; 
     case PHAuthorizationStatusRestricted: 
      NSLog(@"PHAuthorizationStatusRestricted"); 
      break; 
    } 
}];