Iphone 使用writeImageToSavedPhotosAlbum将UIImage保存到相册

Iphone 使用writeImageToSavedPhotosAlbum将UIImage保存到相册,iphone,objective-c,ios,alassetslibrary,Iphone,Objective C,Ios,Alassetslibrary,我正在尝试将UIImage保存到相册中。我试过几种方法最后一种是: -(IBAction)captureLocalImage:(id)sender{ [photoCaptureButton setEnabled:NO]; // Save to assets library ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeImageToSavedPhotosAlbum: imageView.im

我正在尝试将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,其中包含我要保存的图像。 在日志中,我得到了“PHOTO SAVED-assetURL:(null)”并且照片没有保存到库中

我做错了什么?

看看这个。。这说明了如何使用资源库保存照片

你甚至可以使用

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

切克出他的链接

只需使用下面这一行将图像保存到您的照片库中即可

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

:)

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

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


由于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, ...
}
func映像(映像:UIImage,didFinishSavingWither错误:NSError?,contextInfo:UnsafePointer){
//检查错误,报告图像已保存。。。
}

从相机拍照时,可以将图像保存在picker delegate中:

- (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];
}
对于iOS 11+需要隐私-照片库添加使用说明,请参见
info.plist

在info.plist中添加
NSPhotoLibraryAddUsageDescription

代码:


我尝试过这些方法,结果都是一样的。有没有可能是因为我以前在当地图书馆拍照,但没关好门之类的?我可以看到我得到的照片,但无法保存它。我绝望了…我已经解决了这个问题,问题不在于这个代码片段。我已经发布了上面的确切问题。谢谢,我也有同样的问题。我还没有想出解决办法。请看下面我的答案。我解决了我的问题,也许这对你也有帮助。我认为OP是专门询问如何保存到特定的相册,而不仅仅是一般性地询问如何保存图像。(我确实意识到我在这里比赛迟到了,但在我看来这是一个重要的区别)伊朗说他在将一张照片保存到相册中时遇到了问题。这听起来像是他想保存到一张特定的专辑。1.伊丹没有接受你的回答。他接受了自己的回答。向下滚动并查看。2.你没有错,但你没有回答整个问题。在我看来,下面的@vishy在明确回答一个明确的问题方面做得更好,即如何保存,而不是保存到一张特定的专辑中。第段,我们显然不同意,任何进一步的交流都应该通过私人聊天进行。基本上,在我看来,@vishy在你写答案时已经回答了这个问题。你的答案比维希的信息少,而且你是在维希之后写的,所以它看起来既没有必要,也不如我。不管怎样,这都不是什么大不了的事。我的一票否决不会对你的信誉产生任何重大影响。@MaxvonHippel没问题,我只是给出了我的意见,你也站在你这边。谢谢:)
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);