iOS-iOS调用相机调用相册【将图片保存到本地相册】
设置头部代理
<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
1.调用相机
检测前置摄像头是否可用
- (BOOL)isFrontCameraAvailable{ return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]; }
检测后置摄像头是否可用
- (BOOL)isRearCameraAvailable{ return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]; }
调用相机
///调用相机 - (void)persentImagePicker{ if (!_imagePickerG) { ///初始化相机 _imagePickerG = [[UIImagePickerController alloc]init]; ///代理 _imagePickerG.delegate = self; } // 前面的摄像头是否可用 if ([self isFrontCameraAvailable]) { _imagePickerG.sourceType = UIImagePickerControllerSourceTypeCamera; } // 后面的摄像头是否可用 else if ([self isFirstResponder]){ _imagePickerG.sourceType = UIImagePickerControllerSourceTypeCamera; } else{ [SVProgressHUD showErrorWithStatus:@"没有相机可用~"]; return; } ///允许拍照后裁剪 _imagePickerG.allowsEditing = YES; [self.navigationController presentViewController:_imagePickerG animated:YES completion:nil]; }
2.调用相册
///调用本地相册 - (void)persentImagePicker{ if (!_imagePickerG) { ///初始化相机 _imagePickerG = [[UIImagePickerController alloc]init]; ///代理 _imagePickerG.delegate = self; } ///相册 _imagePickerG.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; _imagePickerG.allowsEditing = YES; [self.navigationController presentViewController:_imagePickerG animated:YES completion:nil]; }
3.代理事件
///取消选择图片(拍照) - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ [picker dismissViewControllerAnimated:YES completion:nil]; }
///选择图片完成(从相册或者拍照完成) - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];///原图 //获取修剪后的图片 UIImage *imageUp = [info objectForKey:UIImagePickerControllerEditedImage]; }
4.将图片保存到本地
///保存图片到本地相册 -(void)imageTopicSave:(UIImage *)image{ UIImageWriteToSavedPhotosAlbum(image, self, @selector(image: didFinishSavingWithError: contextInfo:), nil); } - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{ if (error == nil) { } else{ ///图片未能保存到本地 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】