我正在尝试将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,其中包含我要保存的图像。在日志中,我得到了"照片已保存 - 资产URL:(空)",并且照片没有保存到库中。
我做错了什么?
只需使用此波纹管线即可将图像保存在照片库中
UIImageWriteToSavedPhotosAlbum(imageView.image,nil,nil,nil);
:)
对于 iOS 11+ 需要隐私 - 照片库添加使用说明在info.plist
在信息列表中添加NSPhotoLibraryAddUsageDescription
法典:
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
参考
查看此示例.. 它解释了如何使用资源库保存照片。
你甚至可以使用..
UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);
塞赫克他的链接 如何将图片保存到iPhone照片库?
我正在使用GPUImage,显然库本身存在某种问题。
上面的代码绝对有效。如果您想阅读有关此问题的更多信息:
GPUImagePicture with imageFromCurrent ProcessingOutput 未获得 UIImage
由于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, ...
}
从相机拍摄照片时,可以将图像保存在选取器委托中:
- (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];
}