【问题标题】:Save a photo to the camera roll and make sure it actually saved将照片保存到相机胶卷并确保它实际保存
【发布时间】:2013-07-18 02:47:57
【问题描述】:

我目前正在以这种方式将 UIImage 保存到相机胶卷。

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

但是如果用户拒绝我们访问他们的照片会发生什么...我如何判断这已经发生并显示错误消息?

【问题讨论】:

  • 您是否尝试过传入完成处理程序并查看会发生什么?
  • @rmaddy 我不知道有一个 :) 完成处理程序的代码是什么?我将在哪里实施这样的事情? :)
  • 您是否阅读了UIImageWriteToSavedPhotosAlbum 的文档?
  • @rmaddy 找到了!谢谢:)
  • 完成处理程序示例可以在这里找到:stackoverflow.com/q/7628048/2057171

标签: ios objective-c image save photo


【解决方案1】:

为了将图像保存到相机胶卷,我使用了 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]; 确定当前状态。
  • 您可以在要保存 UIImage 的任何地方使用 ALAssetsLibrary,但在这种情况下,我保存的是用户使用相机拍摄的图像,因此可以双向使用。如果要保存不是用相机拍摄的 UIImage,请使用相同的方法,唯一的区别是如何获取 UIImage*takingImage=@"myimage.png";而且您不需要 - (void)imagePickerController:(UIImagePickerController *) Picker didFinishPickingMediaWithInfo:(NSDictionary *)info 方法,因为您正在从另一个地方保存图像。
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 2012-07-22
  • 2013-04-03
  • 2012-05-01
  • 2018-09-22
  • 2012-11-21
  • 2013-07-22
  • 1970-01-01
相关资源
最近更新 更多