IOS:Camera的特性分析与使用
Camera是IOS中很重要的一个信息获取途径。
以下我们主要从硬件特性以及软件特性两个方面来看看Canera的使用,先来看看软件上我们使用Camera都能干点什么。
先来看看以下一张图:
相机软件部分主要介绍两个部分:
<1> UIImagePickerController
<2> AVCapture
AVCapture的结构和使用在前面的博客中已经介绍了,这里先来看看UIImagePickerController的相关特点。
我们使用UIImagePickerController能够做点什么?
<1> UIImagePickerController
(1)输入源设置:相机、照片库
(2)设置前后摄像头
(3)设置视频质量
(4)设置照片、视频模式
(5)设置闪光灯打开方式
(6)视频编辑
(7)自己定义摄像界面
拍照部分:能够參考以下代码:
self.imagePicker = [[UIImagePickerController
alloc]
init];
self.imagePicker.delegate =
self;//设置托付代理
self.imagePicker.sourceType
= UIImagePickerControllerSourceTypeCamera;
self.imagePicker.videoQuality
= UIImagePickerControllerQualityTypeIFrame1280x720;
// self.imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
self.imagePicker.cameraFlashMode
= UIImagePickerControllerCameraFlashModeOn;
self.imagePicker.cameraDevice
= UIImagePickerControllerCameraDeviceFront;
self.imagePicker.allowsEditing
= YES;//设置UIImagePickerController是否同意编辑
相机属性设置之后。通过模态势图将相机打开:
[self
presentViewController:self.imagePicker
animated:YES
completion:NULL];
在完毕以上设置之后就能够在回调方法中拿到我们拍摄的、或者从照片库中选取的图片:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info
{
// 获取可编辑Image
UIImage *image = [info
objectForKey:UIImagePickerControllerEditedImage];
UIImageWriteToSavedPhotosAlbum (image,
nil,
nil , nil);//保存到本地相冊
self.imageView.image = image;
self.imageView.contentMode
= UIViewContentModeScaleAspectFill;//照片的显示方式是否全屏
[self
dismissViewControllerAnimated:YES
completion:NULL];//模态视图退出
}
能够将照片保存起来,也能够对比片进行处理加入特效等等。
。。
视频录制部分:
视频录制设置和视频保存与拍照方法有些不一样。參考代码例如以下:
// 设置媒体类型。从当前摄像头获取媒体。
self.imagePicker.mediaTypes = [UIImagePickerController
availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info
{
// 检測当前是
拍摄照片还是拍摄视频
NSString *mediaType = [info
objectForKey:
UIImagePickerControllerMediaType];
if (CFStringCompare((__bridge
CFStringRef) mediaType,
kUTTypeMovie,
) ==
kCFCompareEqualTo)
{
// 保存视频,所选择视频的来源地址。
NSString *moviePath = [[info
objectForKey:
UIImagePickerControllerMediaURL] path];
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath))
{
UISaveVideoAtPathToSavedPhotosAlbum (moviePath,
nil,
nil, nil);
}
}
[self
dismissViewControllerAnimated:YES
completion:NULL];
}
自己定义相机拍摄界面:
这个功能在相机上用的也很的多。比方我们常常须要定制个性化的相机。比方美颜相机拍照功能等等。。
。
核心代码:
self.imagePicker.cameraOverlayView
= [自己定义UIView ,在UIView上设置各种button];
比如:闪光灯button:
UIView *view = [[UIView
,
, , )];
view.backgroundColor = [UIColor
clearColor];
UIButton *flashButton = [[UIButton
,
, , )];
flashButton.backgroundColor = [UIColor
colorWithRed:.5
green:.5
blue:.5 alpha:.5];
[flashButton setTitle:@"闪光灯"
forState:UIControlStateNormal];
[flashButton setTitleColor:[UIColor
whiteColor] forState:UIControlStateNormal];
好了。写到这里篇幅已经有点长了,AVCapture 放到下一篇中,以免引起视觉疲劳 呵呵。
IOS:Camera的特性分析与使用的更多相关文章
- 《iOS应用逆向工程:分析与实战》
<iOS应用逆向工程:分析与实战> 基本信息 作者: 沙梓社 吴航 刘瑾 丛书名: 信息安全技术丛书 出版社:机械工业出版社 ISBN:9787111450726 上架时间:2 ...
- 【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇
由于后续篇幅比较大,所以调整了内容结构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 APP分析篇 [HELLO WAKA]WAKA iOS客户端 之二 架构设计与实现篇 [HELL ...
- MySQL · 特性分析 · 优化器 MRR & BKA【转】
MySQL · 特性分析 · 优化器 MRR & BKA 上一篇文章咱们对 ICP 进行了一次全面的分析,本篇文章小编继续为大家分析优化器的另外两个选项: MRR & batched_ ...
- iOS 9应用开发教程之iOS 9新特性
iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...
- iOS 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
时间2013-08-20 12:49:20 GoWhich原文 http://www.gowhich.com/blog/view/id/343 苹果官方 Crash文件分析方法 (iOS系统Cras ...
- 新书《iOS应用逆向工程:分析与实战》
前无古人!小白福音!国内第一本iOS应用逆向工程类图书<iOS应用逆向工程:分析与实战>就要空降啦~! 你是否曾因应用上线的第一天即遭破解而无奈苦恼,想要加以防范,却又束手无策? 你是否曾 ...
- iOS 8 新特性
这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...
- iOS绘图框架CoreGraphics分析
由于CoreGraphics框架有太多的API,对于初次接触或者对该框架不是十分了解的人,在绘图时,对API的选择会感到有些迷茫,甚至会觉得iOS的图形绘制有些繁琐.因此,本文主要介绍一下iOS的绘图 ...
- iOS开发——高级特性&Runtime运行时特性详解
Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 ...
随机推荐
- servlet3.0 @WebServlet注解无效的情况
web.xml文件中的metadata-comcomplete属性的作用: 该属性指定当前的部署描述文件是否是完全的.如果设置为true,则容器在部署时只依赖部署描述文件,忽略所有的注解(同时也会跳过 ...
- 【BZOJ】2002: [Hnoi2010]Bounce 弹飞绵羊
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 14802 Solved: 7507[Subm ...
- 【8.17校内测试】【模拟】【set】【网络流】
为什么每次想的最久的题得的分数最低!!!qwqwq 再也不在noip上尝试A*叻!! 模拟题,先把能消的消掉,双指针从两端向中间扫描,如果头尾合并可以消,就把它消掉,最后判断一下.因为消完过后num保 ...
- poj 3468 A Simple Problem with Integers 线段树区间加,区间查询和
A Simple Problem with Integers Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?i ...
- ios常用的字符串NSString自动释放理解
最近在做程序的时候,突然发现对于NSString的理解还是存在问题的.因此补充一片blog,希望对刚刚进入OC开发并搞不清楚内存泄露问题的人一点指引. 赋值: NSString * str = @&q ...
- [Gradle] Gradle 构建 android 应用常见问题解决指南
转载地址:http://www.cnblogs.com/youxilua/p/3348162.html 1: 使用最新的gradle android插件 以前我们写的时候会这么写 dependenci ...
- 关于FFmpegInterop项目的编译
如果是从git 上下载的最新版本 FFmpeg,那么打开VS2015编译时会报出一个错误 C4996 'av_free_packet': 被声明为已否决 FFmpegInterop ...
- Mysql客户端中文乱码问题解决
另一篇一样的: http://www.cnblogs.com/charlesblc/p/5973488.html 在Linux机器上使用Mysql客户端访问获取中文有时候是乱码,如下: mysql&g ...
- 进程控制块(PCB)结构
一.进程控制块(PCB)结构 进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构.系统用它来记录进程的外部特征,描述进程的运动变化过程.同时,系统可以利用PCB来控制和管理进程,所以说,P ...
- Backup and restore of FAST Search for SharePoint 2010
一个同事问我一个问题: 如果FAST Search for SharePoint 2010被full restore到了一个之前的时间点, 那么当FAST Search重新开始一个增量爬网的时候, 会 ...