iOS相机相册调用 — UIImagePickerController

iOS UIImagePickerController轻松调用相机详细介绍 当我们需要调用相机时,通常有两个方案,一是使用系统定制UI的UIImagePickerController,二是使用可以自定义UI的AVCaptureSession。 如果我们不要求自定义UI则可以直接使用UIImagePickerController,可以节省时间。 @interface UIImagePickerController : UINavigationController 我... 阅读详情

在iOS开发中如果要调用相机拍取照片或者是直接获取相册中的照片,那么调用UIImagePickerController是个不错的选择。UIImagePickerController继承于UINavigationController,使用代理方法时需要同时遵守这两个控制器的协议,它不仅可以用来选取图片,其实它的还能用来拍摄视频。

1.UIImagePickerController简介

UIImagePickerController是系统提供的用来获取图片或视频的接口,使用UIImagePickerController类来获取图片的基本步骤如下:

  • 初始化UIImagePickerController类
  • 设置UIImagePickerController实例的数据来源
  • 设置UIImagePickerController实例的代理
  • 设置是否允许编辑图片,若允许则allowsEditing属性值置为YES
  •  设置完UIImagePickerController实例的属性之后,在需要获取图片时要跳转到图像选取控制器当中去选取或拍摄图片
  • 完成图片的选取后回调代理方法

UIImagePickerController实例的三种数据来源:

 
  1. typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
  2. UIImagePickerControllerSourceTypePhotoLibrary, // 来自图库
  3. UIImagePickerControllerSourceTypeCamera, // 来自相机
  4. UIImagePickerControllerSourceTypeSavedPhotosAlbum // 来自相册
  5. };

2.实际测试相机和图库

本次构建的应用允许用户通过相机或者图库来选取一张图像并在imageView当中显示。

2-1.设计界面

在故事板中为程序的主界面添加一个imageView和一个button,并为他们添加两个输出接口:

QQ20160330-0

 
  1. #import <UIKit/UIKit.h>
  2.  
  3. @interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
  4.  
  5. @property (weak, nonatomic) IBOutlet UIImageView *imageView;
  6. - (IBAction)chooseImage:(id)sender;
  7.  
  8. @end

2-2.功能实现

在ViewController.m中实现按钮的点击方法:

 
  1. - (IBAction)chooseImage:(id)sender {
  2. // 创建UIImagePickerController实例
  3. UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
  4. // 设置代理
  5. imagePickerController.delegate = self;
  6. // 是否允许编辑(默认为NO)
  7. imagePickerController.allowsEditing = YES;
  8. // 创建一个警告控制器
  9. UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"选取图片" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
  10. // 设置警告响应事件
  11. UIAlertAction *cameraAction = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  12. // 设置照片来源为相机
  13. imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
  14. // 设置进入相机时使用前置或后置摄像头
  15. imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
  16. // 展示选取照片控制器
  17. [self presentViewController:imagePickerController animated:YES completion:^{}];
  18. }];
  19. UIAlertAction *photosAction = [UIAlertAction actionWithTitle:@"从相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  20. imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
  21. [self presentViewController:imagePickerController animated:YES completion:^{}];
  22. }];
  23. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
  24. }];
  25. // 判断是否支持相机
  26. if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
  27. {
  28. // 添加警告按钮
  29. [alert addAction:cameraAction];
  30. }
  31. [alert addAction:photosAction];
  32. [alert addAction:cancelAction];
  33. // 展示警告控制器
  34. [self presentViewController:alert animated:YES completion:nil];
  35. }

设置UIImagePickerController的代理方法:

 
  1. #pragma mark - UIImagePickerControllerDelegate
  2. // 完成图片的选取后调用的方法
  3. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
  4. // 选取完图片后跳转回原控制器
  5. [picker dismissViewControllerAnimated:YES completion:nil];
  6. /* 此处参数 info 是一个字典,下面是字典中的键值 (从相机获取的图片和相册获取的图片时,两者的info值不尽相同)
  7. * UIImagePickerControllerMediaType; // 媒体类型
  8. * UIImagePickerControllerOriginalImage; // 原始图片
  9. * UIImagePickerControllerEditedImage; // 裁剪后图片
  10. * UIImagePickerControllerCropRect; // 图片裁剪区域(CGRect)
  11. * UIImagePickerControllerMediaURL; // 媒体的URL
  12. * UIImagePickerControllerReferenceURL // 原件的URL
  13. * UIImagePickerControllerMediaMetadata // 当数据来源是相机时,此值才有效
  14. */
  15. // 从info中将图片取出,并加载到imageView当中
  16. UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
  17. self.imageView.image = image;
  18. // 创建保存图像时需要传入的选择器对象(回调方法格式固定)
  19. SEL selectorToCall = @selector(image:didFinishSavingWithError:contextInfo:);
  20. // 将图像保存到相册(第三个参数需要传入上面格式的选择器对象)
  21. UIImageWriteToSavedPhotosAlbum(image, self, selectorToCall, NULL);
  22. }
  23.  
  24. // 取消选取调用的方法
  25. - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
  26. [self dismissViewControllerAnimated:YES completion:nil];
  27. }
  28.  

添加保存图片完成后的回调方法:

 
  1. // 保存图片后到相册后,回调的相关方法,查看是否保存成功
  2. - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
  3. if (error == nil){
  4. NSLog(@"Image was saved successfully.");
  5. } else {
  6. NSLog(@"An error happened while saving the image.");
  7. NSLog(@"Error = %@", error);
  8. }
  9. }

 2-3.效果展示

IMG_0125

 

点击选择图片按钮:

IMG_0126

 

使用相机拍摄:

IMG_0127IMG_0128

IMG_0130

 

从图库中选取:

IMG_0134IMG_0131

 

点击choose选择该图片:

IMG_0133

iOS学习:调用相机和相册,选择图片上传 今天在项目中要实现一个上传头像功能,点击修改头像行弹出拍照或者从相册选择来设置头像。 实现效果如下图: iOS有两种的拍照和视频的方式: 方法A:直接使用UIImagePickerController,这个类提供了一个简单便捷的拍照与选择图片库里图片的功能。 方法B:另一种是通过AVFoundation.framework框架完全自定义拍照的界面和选择图片库界面 阅读详情

相关推荐

comsol 多物理场仿真流程-以开关柜为例

1、主要方法 在SolidWorks中对于开关柜的内部与外部结构进行建模,生成能够导入软件计算的3D模型。将SolidWorks中的模型导入comsol软件中,设置参数进行多物理场耦合仿真。 1、具体步骤 删除高压开关柜中对其内部电磁环境无较大影响的结构,如低压测量柜、断路器内部结构等。 导入模型:将厂家提供的3D模型转化为solidworks结构模型。 修复模型:修复已转化模型中转化错误的部分、修复已转化模型中非实体部分、修复已转化模型中重叠实体部分 化简模型:去除过于...

健忘16的博客 7020

iOS--UIimagePickerController

UIImagePickerController 是 iOS 开发中的一个内置视图控制器,用于方便地实现图像和视频的选择和拍摄功能。它提供了一个用户界面,允许用户从设备的相册库中选择照片或视频,或者使用设备的摄像头进行拍摄。写完知乎日报之后,不知道该学些什么东西,但总的和以后写的项目有关,所以看学长的博客先学习一项相机和相册的调用。从相册中选择照片:用户可以浏览设备相册中的照片,并选择其中的一张照片作为所选项。从相册中选择视频:用户可以浏览设备相册中的视频,并选择其中的一个视频作为所选项。

m0_74217598的博客 2247

Springboot + vue 实现导出word

Springboot + vue 实现导出word 后端代码 使用word先创建好已知的模板 使用word工具另存为.xml格式的文件 使用freemarker ftl模板 将修改后的xml文件复制到开发工具中,将文件后缀修改为ftl文件,并且将里面的动态值使用${}包裹例如:${zyjn} word工具类 /*** * * Project Name:maventest * <p>生成word工具类<br> * * @ClassName: WordUtil *

qq_45542373的博客 2895

【iOS-UIImagePickerController访问相机和相册】

UIImagePickerController是iOS平台上的一个类,用于在应用程序中访问设备的照片库、相机和视频录制功能。它提供了一个用户界面,使用户可以从设备的媒体库中选择照片或视频,或者使用设备的摄像头拍摄照片或录制视频。在这里我们先只介绍一下访问相机和相册这两个功能。

qq_72437394的博客 2747

服务器被矿工入侵记录

一次服务器被矿工入驻的处理记录

王瑞的技术专栏 1333

linux入侵排查-综合日志分析

2.分析攻击者首次成功登录web管理后台的时间 还可以知道攻击者可能是通过10.2.4.11这个跳板服务器跳过来的,然后我们继续排查,可以发现日志中POST请求大多都是1047字节,然后往后大多是300字节,POST请求的响应状态码有200和302这两个,其中的302是爆破成功后持续爆破产生的日志,再1047字节和300字节中间夹着一个978字节,就是200响应和302响应的中间。7.分析攻击者留下的持久化后门的时间和后门执行情况 排查计划任务,发现有一个计划任务还是被加密的,应该是反弹shell的。

chinese_cabbage0的博客 643

ios基础篇(一)—— UIImagePickerController类

UIImagePickerController简述: UIImagePickerController 类是获取选择图片和视频的用户接口,我们可以用UIImagePickerController选择我们所需要的图片和视频。 注:UIImagePickerController不能够任意定制,也不可以继承生成子类。 一、UIImagePickerController的属性: 1、sourceType 设置UIImagePicker照片源类型,默认有3种。照片源类型 指定使用模式(照相机/相册/照片库)

努力进阶的小菜鸟 5530

naca翼型_STARCCM+计算二维翼型气动性能

STAR-CCM+计算二维翼型气动性能一算例背景机翼理论主要研究翼型在流体中运动时的力学特性。在工程领域中,机翼以升力面、控制面、叶片或桨叶等形式出现。舰船上的舵、水翼、减摇鳍等都是机翼,螺旋桨、汽轮机叶片和压缩机叶片也都是利用机翼原理工作的,而在研究船舶操纵性时,甚至还可把船体的水下部分看作一个巨大的机翼。随着航空科学的发展,世界各主要航空发达的国家建立了各种翼型系列。美国有NACA系...

weixin_39863741的博客 1万+

[Objective-C]UIImagePickerController使用教程

UIImagePickerController使用教程

qq_42208321的博客 1610

WPF实战案例 | C# WPF实现大学选课系统

WPF实战案例_C# WPF实现大学选课系统, C# WPF实现大学选课系统,大作业,毕业设计,该系统实现多身份登录、修改密码、课程的管理,个人信息的管理等功能。这个源码让你快速搭建自己的应用程序,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接用程序打开,运行使用。也可直接点击EXE运行程序。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4624

团体程序设计天梯赛竞赛题--登顶题【L3-042 污染大亨】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 1361

ios 调用系统相机,图库,相册。将照片保存在相册,保存图片在本地,UIImagePickerController

ios 调用系统相机,图库,相册。将照片保存在相册,保存图片在本地,UIImagePickerController

yiral的博客 856

华为OD机试 - 末世分配资源包 - 二分查找 + 贪心(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。末世时代,政府为各地方配资源,现有资源分配表 nums[n],要求按如下规则分配给 k 个营地:在最优平均分配情况下,得到最大团队所获得的资源数4,3,6,9,7 216最佳划分之一:[4,3,6] -> 13 [9,7] -> 16最大

学Java,找哪吒 224

IOS 相机和相册的调用UIImagePickerController

文章目录UIImagePickerController类常用属性与方法UIImagePickerControllerDelegate代理协议举例准备工作代码 在App开发时,当我们需要调用摄像头拍照或者希望从相册中选择一张照片时,都可以使用UIImagePickerController类来完成。UIImagePickerController类把从iOS设备中获取图片的操作进行了统一封装,使用图片来...

煮酒Shae 2918

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iOS使用UIImagePickerController调用系统相机、相册与图库

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

weixin_34357887的博客 244

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[iOS 相机相册调用] UIImagePickerController 简单实用 [转]

[转]文/Shelin(简书作者) 原文链接:http://www.jianshu.com/p/e70a184d1f32 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。**在iOS中要拍照和录制视频最简单的方式就是调用UIImagePickerController,UIImagePickerController继承与UINavigationController,需要使用代理方法时

iOSTianNan的博客 4647

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ios开发学习笔记--调用相册或相机(UIImagePickerController)

Ios开发相册和相机的使用—UIImagePickerController 在开发中,有时候需要获取用户的相册或者调用相机采集图片,比如APP的头像,此时可以使用UIImagePickerController. 提醒一点。UIImagePickerController继承于UINavigationController所以在调用代理方法时,应同时遵循两个代理协议。另外,它还可以用于拍摄视

小桥流水哗啦啦,iOS Coder 哒哒哒 2487

Xamarin.iOS-UIImagePickerController调用相机和获取相册列表【控件篇】

1.声明一个对象 private nfloat ScreenWidth = UIScreen.MainScreen.Bounds.Width; private nfloat ScreenHeight = UIScreen.MainScreen.Bounds.Height; UIImagePickerController imagePicker; UIImageView imageV

ZFJ_张福杰 2893

iOS——调用系统相册和相机

表示媒体的类型,是图片还是视频。

m0_73348697的博客 1723

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

在大部分app中,都是会使用到调用相机和相册的,所以学习app开发就必须要学习一下调用相机和相册。 首先要先了解一下UIImagePickerController。 一、UIImagePickerController UIImagePickerController是iOS系统提供的和系统的相册和相机交互的一个类,可以用来获取相册的照片,也可以调用系统的相机拍摄照片或者视频。该类的继承结构是: UIImagePickerController–>UINavigationController–>UI

weixin_50990189的博客 2335

iOS中调用相机以及相册

有时候需要在程序中调用系统的相机以及手机相册,接下来简要介绍调用的方法://.h文件@interface CameraViewController : UIViewController @property (nonatomic,retain)UIImageView *imageView;// @property (nonatomic,retain)UIImagePickerController

V5V6_neil的专栏 1067

iOS 调用相机,获取相册,截取头像

iOS 调用相机,获取相册,截取头像前言应用经常需要使用到用户提供的图像。iOS提供了两种方式:UIImagePickerController和资产库:(asset library)。UIImagePickerController提供了导航相册和照片的模态用户界面,适合在应用没有特殊的照片浏览和选择需求(即Apple提供的风格就能满足要求)时使用;资产库提供了全面的照片和相册访问功能,适合在图像导航

海渊_haiyuan的博客 2073

华山论剑之浅谈iOS调用大乱斗(电话,短信,浏览器,相机,相册)

我们在程序中或多或少都会使用到手机的一些应用程序,比如电话,短信,浏览器,相机,相册等,那么我们该如何调用这些系统自带的应用程序呢?下面我一一说来. 调用电话、浏览器 对于调用电话和浏览器比较简单,使用UIApplication调用openURL方法. 调用系统电话 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]]; 调用系统safari浏览器 [[UIApplication sha

得不到的永远是骚栋. 234
上一篇: Block(块)介绍之五:系统框架中的Block
下一篇: iOS 系统应用调用: 电话、短信息、邮件
ISX-YC
博客等级 码龄11年 15粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值