我正在以这种方式将UIImage保存到相机胶卷。将照片保存到相机胶卷并确保其实际保存
UIImageWriteToSavedPhotosAlbum(finalPicture.image, nil, nil, nil);
但是,如果用户拒绝允许我们访问他们的照片会发生什么......我怎么能告诉,这已经发生了,显示错误消息?
我正在以这种方式将UIImage保存到相机胶卷。将照片保存到相机胶卷并确保其实际保存
UIImageWriteToSavedPhotosAlbum(finalPicture.image, nil, nil, nil);
但是,如果用户拒绝允许我们访问他们的照片会发生什么......我怎么能告诉,这已经发生了,显示错误消息?
要保存图像的相机胶卷我使用ALAssetsLibrary这样的方法:
//Called after taking the photo with the camera or selected the image from the gallery
- (void)imagePickerController:(UIImagePickerController *) Picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL *referenceURL;
if(Picker.sourceType==UIImagePickerControllerSourceTypeCamera){
UIImage* takenImage=info[UIImagePickerControllerOriginalImage];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
// Request to save the image to camera roll
[library writeImageToSavedPhotosAlbum:[takenImage CGImage] orientation:(ALAssetOrientation)[takenImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
if (error) {
//NOT SAVED
//DISPLAY ERROR THE PICTURE CAN'T BE SAVED
} else {
//SAVED
}
}];
}
}else{
//Selected from gallery
}
还记得,你必须先检查照相机。
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
//The camera is available
}else{
//No camera available
}
但是,这仍然工作只是保存一个UIImage或这只是为了让他们与相机拍摄照片,然后保存? –
@AlbertRenshaw如果最终使用'ALAssetsLibrary',您可以先调用'[ALAssetsLibrary authorizationStatus];'来确定当前状态。 – rmaddy
您可以在任何想要保存UIImage的地方使用ALAssetsLibrary,但在这种情况下,我会保存用户使用相机拍摄的图像,因此可以双向工作。如果你想保存一个没有用相机拍摄的UIImage,使用相同的方法,唯一的区别是你如何获得UIImage * takenImage = @“myimage.png”;你不需要 - (void)imagePickerController:(UIImagePickerController *)Picker didFinishPickingMediaWithInfo:(NSDictionary *)info方法,因为你正在从另一个地方保存图像。 – Moy
您是否尝试传递完成处理函数并查看会发生什么? – rmaddy
@rmaddy我不知道有一个:)完成处理程序的代码是什么?我会在哪里实施这样的事情? :) –
您是否阅读过“UIImageWriteToSavedPhotosAlbum”的文档? – rmaddy