2013-07-18 101 views
2

我正在以这种方式将UIImage保存到相机胶卷。将照片保存到相机胶卷并确保其实际保存

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

但是,如果用户拒绝允许我们访问他们的照片会发生什么......我怎么能告诉,这已经发生了,显示错误消息?

+0

您是否尝试传递完成处理函数并查看会发生什么? – rmaddy

+0

@rmaddy我不知道有一个:)完成处理程序的代码是什么?我会在哪里实施这样的事情? :) –

+0

您是否阅读过“UIImageWriteToSavedPhotosAlbum”的文档? – rmaddy

回答

6

要保存图像的相机胶卷我使用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 
    } 
+0

但是,这仍然工作只是保存一个UIImage或这只是为了让他们与相机拍摄照片,然后保存? –

+0

@AlbertRenshaw如果最终使用'ALAssetsLibrary',您可以先调用'[ALAssetsLibrary authorizationStatus];'来确定当前状态。 – rmaddy

+0

您可以在任何想要保存UIImage的地方使用ALAssetsLibrary,但在这种情况下,我会保存用户使用相机拍摄的图像,因此可以双向工作。如果你想保存一个没有用相机拍摄的UIImage,使用相同的方法,唯一的区别是你如何获得UIImage * takenImage = @“myimage.png”;你不需要 - (void)imagePickerController:(UIImagePickerController *)Picker didFinishPickingMediaWithInfo:(NSDictionary *)info方法,因为你正在从另一个地方保存图像。 – Moy

相关问题