2012-06-21 11 views
111

Sono nuovo di Xcode (utilizzando 4.3) e non sono sicuro di come salvare un'immagine sul rullino fotografico del dispositivo. Tutto ciò che ho fatto finora è impostato su IBAction per il pulsante per salvare l'immagine. Quale metodo o funzione della libreria posso utilizzare per salvare un'immagine sul rullino fotografico dell'utente?Come posso salvare un'immagine sul rullino fotografico?

risposta

212

Si utilizza la funzione UIImageWriteToSavedPhotosAlbum().

//Let's say the image you want to save is in a UIImage called "imageToBeSaved" 
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil); 

Edit:

//ViewController.m 
- (IBAction)onClickSavePhoto:(id)sender{ 

    UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil); 
} 
+0

Diciamo che ho "- (IBAction) onClickSavePhoto: (id) mittente;" nel mio file ViewController.h, usando quello che hai sopra, che cosa dovrei esattamente inserire nel file ViewController.m? Grazie ancora! – user1470914

+1

@ user1470914 Vedi la mia modifica. Inoltre, dove stai ottenendo l'immagine da salvare nel rullino fotografico? È già nel pacchetto della tua app o l'utente scatta una foto e poi la salva nel rullino? – pasawaya

+0

Grazie per la vostra pazienza qegal. Non ho avuto la possibilità di rivisitare questo problema fino ad ora. Il tuo EDIT ci è di grande aiuto. L'immagine è nel pacchetto dell'app. Ci sono diverse immagini nell'app e possono essere visualizzate come miniature ridotte. Quando viene selezionata una miniatura piccola, si passa a una nuova vista e si può visualizzare una versione a schermo intero. Ho un pulsante nell'angolo destro della parte superiore del navigatore che dice "salva" e questo è il pulsante che desidero salvare l'immagine sul rullo camerale del dispositivo in modo che possa essere applicato come sfondo. Grazie ancora per il tuo aiuto e la tua pazienza (non sono sicuro del motivo per cui CasperOne ha chiuso questo). – user1470914

6

Per avere un riferimento, è possibile salvare i video in modo simile:

UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil); 

si potrebbe desiderare di salvare un video da caricare a Instagram, ad esempio:

// Save video to camera roll; we can share to Instagram from there. 
-(void)didTapShareToInstagram:(id)sender { 
    UISaveVideoAtPathToSavedPhotosAlbum(self.videoPath, self, @selector(video:didFinishSavingWithError:contextInfo:), (void*)CFBridgingRetain(@{@"caption" : caption})); 
} 

- (void)    video: (NSString *) videoPath 
    didFinishSavingWithError: (NSError *) error 
       contextInfo: (void *) contextInfoPtr { 

    NSDictionary *contextInfo = CFBridgingRelease(contextInfoPtr); 
    NSString *caption   = contextInfo[@"caption"]; 

    NSString *escapedString = [videoPath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; // urlencodedString 
    NSString *escapedCaption = [caption stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; // urlencodedString 

    NSURL *instagramURL  = [NSURL URLWithString:[NSString stringWithFormat:@"instagram://library?AssetPath=%@&InstagramCaption=%@", escapedString, escapedCaption]]; 

    [[UIApplication sharedApplication] openURL:instagramURL]; 
} 
29

Ecco una risposta f o iOS8 usando il framework Photos.

Objective-C:

#import <Photos/Photos.h> 

UIImage *snapshot = self.myImageView.image; 

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 
    PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:snapshot]; 
    changeRequest.creationDate   = [NSDate date]; 
} completionHandler:^(BOOL success, NSError *error) { 
    if (success) { 
     NSLog(@"successfully saved"); 
    } 
    else { 
     NSLog(@"error saving to photos: %@", error); 
    } 
}]; 

Swift:

// Swift 3.0 
import Photos 

PHPhotoLibrary.shared().performChanges({ 
    PHAssetChangeRequest.creationRequestForAsset(from: snapshot) 
}, completionHandler: { success, error in 
    if success { 
     // Saved successfully! 
    } 
    else if let error = error { 
     // Save photo failed with error 
    } 
    else { 
     // Save photo failed with no error 
    } 
}) 

Ecco un link alla documentazione Apple.

+0

Come ottenere l'URL dell'immagine @ricardopereira –

+0

@Mansuu Si prega di dare un'occhiata a https://stackoverflow.com/a/37248867/3641812 – ricardopereira

Problemi correlati