9

我正在尝试将 UIImage 保存到相册。我尝试了几种方法,最后一种是:

-(IBAction)captureLocalImage:(id)sender{

[photoCaptureButton setEnabled:NO];

// Save to assets library
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

[library writeImageToSavedPhotosAlbum: imageView.image.CGImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error2)
 {
     //             report_memory(@"After writing to library");
     if (error2) {
         NSLog(@"ERROR: the image failed to be written");
     }
     else {
         NSLog(@"PHOTO SAVED - assetURL: %@", assetURL);
     }

     runOnMainQueueWithoutDeadlocking(^{
         //                 report_memory(@"Operation completed");
         [photoCaptureButton setEnabled:YES];
     });
 }];  

}

imageView 是一个 UIImageView ,其中包含我要保存的图像。在日志上,我得到“照片已保存-assetURL:(null)”并且照片没有保存到库中。

我究竟做错了什么?

4

6 回答 6

12

只需使用此波纹管将图像保存在您的照片库中

UIImageWriteToSavedPhotosAlbum(imageView.image,nil,nil,nil);

:)

于 2012-10-02T11:33:53.370 回答
2

查看此示例.. 它解释了如何使用资产库保存照片..

你甚至可以使用..

UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);

查看他的链接如何将图片保存到 iPhone 照片库?

于 2012-10-02T10:32:44.963 回答
2

对于 iOS 11+ 需要隐私 - 照片库添加使用说明info.plist

添加NSPhotoLibraryAddUsageDescriptioninfo.plist

代码:

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

参考

于 2018-04-04T08:40:21.280 回答
1

我正在使用 GPUImage,显然库本身存在某种问题。

上面的代码绝对有效。如果您想了解有关此问题的更多信息:

带有 imageFromCurrentlyProcessedOutput 的 GPUImagePicture 没有得到 UIImage

于 2012-10-04T21:44:11.293 回答
0

由于 iOS 8.1 UIKit 框架具有 UIImageWriteToSavedPhotosAlbum() 函数,如 vishy 所说。

我以这种方式使用它:

 UIImageWriteToSavedPhotosAlbum(myImage, self, "image:didFinishSavingWithError:contextInfo:", nil)

进而

func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo:UnsafePointer<Void>) {
    // check error, report image has been saved, ...
}
于 2015-11-04T10:23:39.190 回答
0

当您从相机拍照时,您可以将图像保存在选取器委托中:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info valueForKey:UIImagePickerControllerEditedImage];   
    [library writeImageToSavedPhotosAlbum:image.CGImage metadata:[info objectForKey:UIImagePickerControllerMediaMetadata] completionBlock:^(NSURL *assetURL, NSError *error) {
...
    }];



    [picker dismissViewControllerAnimated:YES completion:nil];
}
于 2015-12-23T05:29:49.877 回答