it-swarm.com.de

Wie kann ich ein Bild auf der Kamerarolle speichern?

Ich bin neu in Xcode (mit 4.3) und nicht sicher, wie ich ein Bild auf der Kamerarolle des Geräts speichern soll. Alles, was ich bisher getan habe, ist eine IBAction für die Schaltfläche zum Speichern des Bildes einzurichten. Mit welcher Bibliotheksmethode oder -funktion kann ich ein Bild auf der Kamerarolle des Benutzers speichern?

122
user1470914

Sie verwenden die Funktion UIImageWriteToSavedPhotosAlbum() .

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

Bearbeiten:

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

    UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil);
}
230
pasawaya

Hier ist eine Antwort für iOS8 + mit dem Photos-Framework.

Ziel-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 4.0
import Photos

let snapshot: UIImage = someImage

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 ein Link zur Apple Dokumentation.

Vergessen Sie nicht, den entsprechenden Schlüssel/Wert zu Ihrer info.plist hinzuzufügen, um die Erlaubnis zum Zugriff auf die Fotobibliothek anzufordern:

<key>NSCameraUsageDescription</key>
<string>Enable camera access to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Enable photo library access to select a photo from your library.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Enable photo library access to save images to your photo library directly from the app.</string>
53
digitalHound

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

UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil);

Möglicherweise möchten Sie ein Video speichern, um es auf Instagram hochzuladen. Beispiel:

// 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];
}
9
Graham Perks

Speichern Sie das Bild in der Fotobibliothek in Swift 4

Verwenden Sie dann den folgenden Code, um das Bild zu speichern

UIImageWriteToSavedPhotosAlbum(imageView.image!, nil, nil, nil)
3