2013-01-23 1 views
12

per un app sto sviluppando, io uso UIImagePickerController per scattare una foto e di conservarlo in rullino fotografico:salvare l'immagine nel rullino fotografico e ottenere patrimoniale url

- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info { 
//... some stuff ... 

     UIImageWriteToSavedPhotosAlbum([info objectForKey:@"UIImagePickerControllerOriginalImage"], nil, nil, nil); 

} 

l'immagine viene salvata, ora ho bisogno di Prendi il suo URL di riferimento, quindi cerco di enumerare il rullino fotografico e ottenere l'ultima immagine, ma ottengo sempre l'immagine prima di quella che ho appena scattato.

Qualcuno ha un'idea di come ottenere il riferimento dell'immagine appena salvata?

Grazie, Max

risposta

12

Questa soluzione dovrebbe risolvere il problema:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    [library writeImageToSavedPhotosAlbum:((UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage]).CGImage 
           metadata:[info objectForKey:UIImagePickerControllerMediaMetadata] 
          completionBlock:^(NSURL *assetURL, NSError *error) { 
           NSLog(@"assetURL %@", assetURL); 
          }]; 

et voilà:

assetURL assets-library://asset/asset.JPG?id=1611E84C-24E2-4177-B49A-1C57B4A9C665&ext=JPG 
+0

si può suggerire di me qualcosa di più su come si salva l'immagine nel rullino fotografico ? Posso salvare l'immagine ma l'URL delle risorse restituisce "null" – Sabarish

+0

È necessario modificare il blocco di completamento. L'esempio sopra il blocco di completamento registra semplicemente assetURL, dovrebbe essere qualcosa come: ALAssetsLibrary * al = [addPhoto defaultAssetsLibrary]; [al assetForURL: assetURL resultBlock: resultblock failureBlock: failureblock]; dove defaultAssetsLibrary è: + (ALAssetsLibrary *) defaultAssetsLibrary { static dispatch_once_t pred = 0; static ALAssetsLibrary * library = nil; dispatch_once (& pred,^{ library = [[ALAssetsLibrary alloc] init]; }); libreria di ritorno; } – masgar