2012-06-21 13 views
111

Ich bin neu bei Xcode (mit 4.3) und bin mir nicht sicher, wie Sie ein Bild auf der Kamera-Rolle des Geräts speichern. Alles, was ich bisher gemacht habe, ist eine IBAction für die Schaltfläche zum Speichern des Bildes eingerichtet. Welche Bibliotheksmethode oder -funktion kann ich verwenden, um ein Bild auf der Kamerarolle des Benutzers zu speichern?Wie kann ich ein Bild auf der Kamerarolle speichern?

Antwort

212

Sie verwenden die UIImageWriteToSavedPhotosAlbum() Funktion.

//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

Sagen wir, ich habe '- (IBAction) onClickSavePhoto: (id) sender;' in meiner ViewController.h-Datei, mit dem, was Sie oben haben, was genau müsste ich in der ViewController.m-Datei platzieren? Nochmals vielen Dank! – user1470914

+1

@ user1470914 Siehe meine Bearbeitung. Wo erhältst du das Bild, das auf der Kamerarolle gespeichert werden soll? Ist es bereits im Paket Ihrer App enthalten oder erstellt der Benutzer ein Bild und speichert es anschließend auf der Kamera-Rolle? – pasawaya

+0

Vielen Dank für Ihre Geduld qegal. Ich hatte bisher keine Gelegenheit, dieses Thema noch einmal zu überdenken. Dein EDIT uns super hilfreich. Das Bild befindet sich im Paket der App. Es gibt mehrere Bilder in der App und sie können als kleine Vorschaubilder angesehen werden. Wenn eine kleine Miniaturansicht ausgewählt ist, wird eine neue Ansicht angezeigt und eine Vollbildversion kann angezeigt werden. Ich habe eine Schaltfläche in der rechten Ecke des Top-Nav, die sagt "Speichern" und das ist die Schaltfläche, die ich möchte, um das Bild auf der Kamerarolle des Geräts speichern, so dass es als Hintergrundbild angewendet werden kann. Nochmals vielen Dank für Ihre Hilfe und Geduld (nicht sicher, warum casperOne dies geschlossen hat). – user1470914

6

Als Referenz können Sie Videos auf ähnliche Weise speichern:

UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil); 

Sie können ein Video speichern möchten Instagram, zum Beispiel zu laden:

// 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

Hier ist eine Antwort f oder iOS8 mit dem Photos-Framework.

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

Hier ist eine link auf der Apple-Dokumentation.

+0

Wie kann man das Bild URL @ricardopereira erhalten –

+0

@Mansuu Bitte werfen Sie einen Blick auf https://Stackoverflow.com/a/37248867/3641812 – ricardopereira

Verwandte Themen