在大部分app中,都是会使用到调用相机和相册的,所以学习app开发就必须要学习一下调用相机和相册。

首先要先了解一下UIImagePickerController。

一、UIImagePickerController

UIImagePickerController是iOS系统提供的和系统的相册和相机交互的一个类,可以用来获取相册的照片,也可以调用系统的相机拍摄照片或者视频。该类的继承结构是:

UIImagePickerController–>UINavigationController–>UIViewController–>UIResponder–>NSObject

二、具体操作

调用相机时:

//访问相机操作
- (void)visitCamera {UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"该app正在请求您的拍摄权限,是否同意?" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"是" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]; //判断相机可不可用if (!isCamera) {NSLog(@"没有摄像头");return;}imagePicker.delegate = self;   //设置代理imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; //数据来源于相机imagePicker.allowsEditing = YES;NSLog(@"=======确认使用相机========");}];UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"否" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {NSLog(@"=======取消使用相机======");}];[alert addAction:okAction];[alert addAction:cancelAction];[self presentViewController:alert animated:YES completion:nil];}

相机的类型:

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {UIImagePickerControllerCameraDeviceRear, //后置摄像头UIImagePickerControllerCameraDeviceFront //前置摄像头
}

调用相册

//访问相册
- (void)visitPhoto {UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"该app正在请求访问您的相册,是否同意访问?" preferredStyle:UIAlertControllerStyleAlert];[self presentViewController:alert animated:YES completion:nil];UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"是" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];[self presentViewController:imagePicker animated:YES completion:nil];imagePicker.delegate = self;imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //数据来源于相册NSLog(@"=======确认访问相册========");}];UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"否" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {NSLog(@"=======取消访问相册======");}];[alert addAction:okAction];[alert addAction:cancelAction];}

UIImagePickerController数据来源:

typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {UIImagePickerControllerSourceTypePhotoLibrary, //来源于相册 UIImagePickerControllerSourceTypeCamera,  //相机UIImagePickerControllerSourceTypeSavedPhotosAlbum  //系统照片应用的照片,包含用设备拍摄的所有照片流
}

选取图片后的回调:

//访问相册后的回调
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {NSLog(@"========所选图片信息=======\n");NSLog(@"%@", info);UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage]; //UIImagePickerControllerOriginalImage 图片可以编辑self.imageView.image = image;[picker dismissViewControllerAnimated:YES completion:^{NSLog(@"图片上传成功!");}];
}

效果:

【iOS开发】—— 调用相机、相册相关推荐

  1. IOS开发调用系统相机和打开闪光灯

    IOS开发调用系统相机和打开闪光灯      今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...

  2. Android 8.0+调用相机相册

    写在前面 近期项目的需求是需要去调用相机相册去拍照获取图片保存到服务器 公司的测试机试Android6.0以下的 所以之前调用相机一点都没问题 可是跑在Android8.0+的手机上 调用相机相册就会 ...

  3. uniapp中调用相机相册/上传/扫码整理

    调用相机相册 uni.chooseImage({count: 1,sizeType: ['original', 'compressed'],sourceType: ['camera','album'] ...

  4. Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传

    一.权限问题 可能会遇到的问题 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() Permissio ...

  5. cocos creator 调用相机相册裁剪图片并上传到服务器

    大致思路就是creator里面js调用Java和object-c代码,调起系统相机相册,选取图库图片/拍照图片进行裁剪,然后转化为base64字符串,最后通过http post请求上传到服务器. Ja ...

  6. iphone开发 调用相机拍照

    调用相机: { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = ...

  7. 微信小程序调用相机相册功能实现

    这个其实很简单,微信提供了api 1 一般我们做个人图像选择的时候可以简单的使用 click1:function(){wx.chooseImage({success: function(res) {} ...

  8. Unity与IOS交互,调用相机相册,兼容ipad

    IOS篇 在处理unity和ios的时候,除了对oc不太习惯以外,还有就是iphone和ipad有些方法需要做区别.比如通用的弹窗方法不用,以及ipad上打开相册竟然可以支持显示的相册不是全屏了!好吧 ...

  9. html调用相机相册案例,Ionic 相册、相机调用

    首先安装依赖: 1.相机依赖 ionic cordova plugin add cordova-plugin-camera npm install --save @ionic-native/camer ...

  10. iOS开发-自定义相机(仿微信)拍照、视频录制

    网上有很多自定义相机的例子,这里只是我临时写的一个小demo,仅供参考: 用到了下面几个库: #import <AVFoundation/AVFoundation.h> #import & ...

最新文章

  1. python那么多库怎么学_这个 Python 库有必要好好学学
  2. php结尾的链接_优化 PHP 代码建议(结尾有彩蛋)
  3. Arimo利用Alluxio的内存能力提升深度学习模型的结果效率(Time-to-Result)
  4. C#使用Mutex实例详解
  5. 【C#/.NET】不用AutoMapper,我用啥呢?
  6. 为什么python不需要编译_为什么我用Go写机器学习部署平台,而偏偏不用Python?...
  7. 韩顺平php视频笔记49 函数深入 php的值传递与引用传递 goto
  8. C++友元函数简单示例
  9. 工具 - 怎么看微信h5的源码?
  10. 让 list-style-image 图片垂直居中
  11. 漏洞扫描工具MySQL_打造一款自动扫描全网漏洞的扫描器
  12. n2n(Pear-to-pear) 内网穿透
  13. 一款经典的 jQuery Lightbox 灯箱效果
  14. 硬件设计28之RS422、RS485
  15. ong拼音汉字_汉语拼音中ong怎么读
  16. GMM Kmeans代码示例
  17. 语音识别第4讲:语音特征参数MFCC
  18. one 主格 复数 宾格_人称代词的主格和宾格
  19. 你一定要这么多功能么?——献给希望创业的兄弟们
  20. OLE- 微软API—对象链接与嵌入

热门文章

  1. 常见分布 的 数学期望以及方差公式
  2. Mybatis传递多个参数的4种方式(干货)
  3. NMT:神经网络机器翻译
  4. 在线支付功能实现代码
  5. Oracle 触发器写法
  6. 4线电阻屏linux驱动,TQ2440四线电阻式触摸屏驱动程序的分析
  7. uni-app银行卡卡号验证
  8. 什么是python基础语法?一篇文章让你更加了解python
  9. 微信小程序校园介绍板
  10. 台式机装苹果系统_关于最近折腾黑苹果的一些心得分享