4 Stimmen

Speichern des Bildes in die Fotobibliothek und Erhalt der URL des gespeicherten Bildes

Ich versuche, ein Bild von der Kamera in die Fotobibliothek zu speichern und dann die URL des gespeicherten Bildes zu speichern. Mein Code:

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

ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];
[library writeImageToSavedPhotosAlbum:(__bridge CGImageRef)([info objectForKey:UIImagePickerControllerOriginalImage])
                          orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error) {
                              if(error == nil) {
                                  _myImageUrl = [NSString stringWithFormat:@"%@",assetURL];
                                  NSLog(@"%@",assetURL);
                              } else NSLog(@"%@",error);
                          }];

[picker dismissViewControllerAnimated:YES completion:nil];}

Mein Problem ist, dass die assetUrl immer NULL ist. Irgendwelche Ideen? Danke!

1voto

Bogdan Punkte 843

Zuletzt, nachdem ich mehr gelesen habe, fand ich die Antwort heraus: Der erste Parameter der Funktion ist vom Typ CGImageRef und (__bridge CGImageRef) macht nicht das, was ich erwartet habe; Aber wenn ich die CGImage Methode des UIImage Objekts aufrufe, funktioniert es. Der richtige Weg, dies zu tun, ist:

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

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];
    CGImageRef image = [[info objectForKey:UIImagePickerControllerOriginalImage] CGImage];
    [library writeImageToSavedPhotosAlbum:image
                              orientation:ALAssetOrientationUp
                          completionBlock:^(NSURL *assetURL, NSError *error) {
                                  if(error == nil) {
                                      _myImageUrl = [NSString stringWithFormat:@"%@",assetURL];
                                      NSLog(@"%@",assetURL);
                                  } else NSLog(@"%@",error);
                              }];

    self.toDoImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [picker dismissViewControllerAnimated:YES completion:nil];
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X