2019独角兽企业重金招聘Python工程师标准>>>

1. 权限

在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置权限.

判断是否有相机权限:

//首先需要导入头文件: #import <AVFoundation/AVFoundation.h>// 判断是够有全向访问相机
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied)
{//无权限NSLog(@"没有访问相机权限");return;
}

判断是否有相册权限:

网上找了很多, 都是说用另一个类来判断的, 叫什么名字忘了, 但是是不能用的, 正确姿势是使用PHPhotoLibrary这个类.

//首先需要导入头文件: #import <Photos/PHPhotoLibrary.h>// 判断是否有访问相册的权限
PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];
if (author == PHAuthorizationStatusRestricted || author ==PHAuthorizationStatusDenied){//无权限NSLog(@"没有访问相册的权限");return;
}

2. 拍照或者使用相册照片

从相机或者相册选择照片需要用到UIImagePickerController类.

从相机选择照片:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePicker animated:YES completion:nil];

从相册选择照片:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;[self presentViewController:imagePicker animated:YES completion:nil];

3. 保存照片到相册

拍照方式选择照片时候, 一般需要将照片保存到本地相册中, 保存相册的代码只有一个方法, 如下所示.

// 将拍照的图片保存到本地UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);

需要注意的是, 第一个参数是要保存的图片, 第二个参数是要执行方法的target, 第三个参数是selector, 第四个参数是传参数. 第三个参数selector, selector的方法名字一般是有参数的(测试写无参数的, 保存时候回崩溃).

//此方法一般是三个参数, 否则容易出错.
- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{NSString *message = @"呵呵";if (!error) {message = @"成功保存到相册";}else{message = [error description];}NSLog(@"message is %@",message);
}

转载于:https://my.oschina.net/whforever/blog/702761

iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册...相关推荐

  1. html上传头像及预览,JS实现上传头像并实时预览

    说起各大网站的用户中心功能,其中就少不了用户头像上传这个小小的功能,如果我们依托框架来编写的的话,相信非常的容易,但如果我们自己来单纯的使用JS来实现头像上传,并在选择本地头像的时候,实现预览我想也是 ...

  2. php上传头像的代码,php实现文件上传及头像预览功能

    php文件上传原理是通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php程序将文件保存在体 ...

  3. uniapp 之 Base64图片的显示问题以及保存到相册

    目录 一.base64 图片显示问题 二.base64 图片保存到相册   一.base64 图片显示问题   uniapp 官网明文指出 image 标签的 src 支持base64 码:   但是 ...

  4. app头像上传vue_VUE上传头像,从相册选择、调用摄像头,ios适用transPath的转换

    HTML //这个图片是田字格,样式 //这是要上传的图片 //删除的图片 // 这个点击保存,是手机上选择好相片才会出来的 点击保存 立即申请 样式: #confrim{ width: 100%; ...

  5. php上传头像的代码,php头像上传预览实例代码

    说道上传图片,大家并不陌生,不过,在以后开发的项目中,可能并不会让你使用提交刷新页面式的上传图片,比如上传头像,按照常理,肯定是在相册选择照片之后,确认上传,而肯定不会通过form表单,点击submi ...

  6. Android kotlin上传头像实现

    Android 上传头像基本上是每个app都有的功能,虽然看起来简单,但是作为新手的我实现起来却没有那么简单,实现如下 从相册获取照片,代码如下 //从相册获取照片private fun getFro ...

  7. vue 移动端头像裁剪_移动端 上传头像 并裁剪功能(h5)

    移动端头像图片上传裁剪 .button { outline: 0; display: inline-block; margin-bottom: 0; font-weight: 400; text-al ...

  8. layui文件上传(头像上传)

    头像上传 头像上传大概流程就是选择电脑上的文件图片然后上传到服务器服务器存起来然后上传到浏览器中,服务器需要用到磁盘存储模块(multer),需要下载安装 multer是Nodejs中用于处理文件上传 ...

  9. ajax图片上传插件demo,jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)...

    这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章 的一个收关.但是最初也是因为想做这么一个功能,一点一点的引发出了好多问题,不断去学习,研究,才写了这三篇. 早些时候已经实现了上 ...

最新文章

  1. 华为MateRS巴黎大皇宫首秀 专为保时捷跑车70周年高定手机
  2. 3.C#中泛型类的进一步探讨
  3. 数据库系统概论:第七章 数据库设计
  4. 快速排序最好,最坏,平均复杂度分析
  5. 使用第三方插件,对office,PDF 进行预览
  6. mysql 取左_MySQL select语句从字符串左侧获取5个字符
  7. php redis 删除元素,redisTemplate.delete()不能删除元素
  8. 为什么你工作努力却没有起色?
  9. 介绍全新的 JSX 转换
  10. Flutter之Stack
  11. V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)
  12. 计算机控制技术实验平台,信号与系统•控制理论及计算机控制技术实验平台
  13. CAD绘图软件使用技巧总结及CAD快捷键大全
  14. java从Object类型转换成double,int类型
  15. matlab函数grid,Matlab基本函数-grid、box函数
  16. Gradle构建速度太慢尝试加快方法
  17. 我们接了条预算100000000的广告!!!
  18. 正则表达式网站在线测试
  19. win10 安装并跑通 mmdetection
  20. ARM服务器和ARM集群服务器的区别

热门文章

  1. 编译时,输出信息重定向到文件
  2. Java8学习笔记(三)--方法引入
  3. IE9以及IE9以下,无法执行innerHTML这一操作的解决方法
  4. Chapter4:Using Standard Control(学习)
  5. 如何防止插入删除表造成的数据库死锁
  6. MFC C++ Cstring与string互转
  7. Linux大文件格式,linux – 用于打印大文件的命令,按大小以人类可读的格式排序...
  8. python维度扩展_在TensorFlow中实现矩阵维度扩展
  9. php 七牛云fetch,七牛云调用类
  10. python打造excel神器_超简单:用Python让Excel飞起来