ios 相机开发 自动对焦
相信大家开发自定义相机的时候都有碰到过 相机怎么自定对焦。 百度查找到的一般都是检查照片的模糊度。其实不用这么麻烦苹果有自带的方法。
不多说附上代码
/**
* AVCaptureSession对象来执行输入设备和输出设备之间的数据传递
*/
@property (nonatomic,strong)AVCaptureSession* session;
@property (nonatomic,strong)AVCaptureDevice *device;
这个2个是开发相机的必备的
self.session = [[AVCaptureSessionalloc]init];
if ([self.sessioncanSetSessionPreset:AVCaptureSessionPresetPhoto])
{
self.session.sessionPreset = AVCaptureSessionPresetPhoto;
}
NSError *error;
self.device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
//更改这个设置的时候必须先锁定设备,修改完后再解锁,否则崩溃
[self.devicelockForConfiguration:nil];
//设置闪光灯为自动
[self.devicesetFlashMode:AVCaptureFlashModeAuto];
[_sessionbeginConfiguration];
if ([_deviceisWhiteBalanceModeSupported:AVCaptureWhiteBalanceModeAutoWhiteBalance]) {
[_devicesetWhiteBalanceMode:AVCaptureWhiteBalanceModeAutoWhiteBalance];
}
[self.deviceunlockForConfiguration];
[_sessioncommitConfiguration];
self.videoInput = [[AVCaptureDeviceInputalloc]initWithDevice:self.deviceerror:&error];
if (error) {
NSLog(@"%@",error);
}
self.stillImageOutput = [[AVCaptureStillImageOutputalloc]init];
//输出设置。AVVideoCodecJPEG 输出jpeg格式图片
NSDictionary * outputSettings = [[NSDictionaryalloc]initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil];
[self.stillImageOutputsetOutputSettings:outputSettings];
// 这里就是监听相机自动对焦的
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(subjectAreaDidChange:)name:AVCaptureDeviceSubjectAreaDidChangeNotificationobject:self.device];
if ([self.sessioncanAddInput:self.videoInput]) {
[self.sessionaddInput:self.videoInput];
}
if ([self.sessioncanAddOutput:self.stillImageOutput]) {
[self.sessionaddOutput:self.stillImageOutput];
}
//初始化预览图层
self.previewLayer = [[AVCaptureVideoPreviewLayeralloc]initWithSession:self.session];
[self.previewLayersetVideoGravity:AVLayerVideoGravityResize];
[self.previewLayersetFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];
- (void)subjectAreaDidChange:(NSNotification *)notification
{
//先进行判断是否支持控制对焦
if (_device.isFocusPointOfInterestSupported &&[_deviceisFocusModeSupported:AVCaptureFocusModeAutoFocus]) {
NSError *error =nil;
//对cameraDevice进行操作前,需要先锁定,防止其他线程访问,
[_devicelockForConfiguration:&error];
[_devicesetFocusMode:AVCaptureFocusModeAutoFocus];
[selffocusAtPoint:self.center];
//操作完成后,记得进行unlock。
[_deviceunlockForConfiguration];
}
}
完了记得移除监听。
ios 相机开发 自动对焦相关推荐
- iOS 11开发教程(一)
iOS 11开发概述 iOS 11是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统的测试版于2017年6月6号(北京时间)被发布.本章将主要讲解iOS 11的新特性.以及使用Xco ...
- android之相机开发
http://blog.csdn.net/jason0539/article/details/10125017 android之相机开发 分类: android 基础知识2013-08-20 22: ...
- Android 拍照后图片的旋转,合并,兼容性 相机开发
在看这篇文章之前,我建议先看相机开发基础 针对这个功能需要做自定义相机,根据Camera相机类和SurfaceView类来实现自定义图形预览拍照功能. 但在实现过程中出现几个难点: 1.如何将自己产品 ...
- 收集各种 iOS App 开发可以用到的代码示例
code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例 cocoacontrols.com/ 英文版本的lib收集 objclibs.com/ 精品lib的收集网站 ...
- 连载 | Android之Camera1实现相机开发
一.前言 现在很多app都会有拍照功能,一般调用系统进行拍照裁剪就能满足平时的需求,但有些场景或者特殊情况下如:持续不间断拍多张照片或者是进行人脸识别的时候,这时候之间调用系统原生相机拍照时不能满足自 ...
- 视频教程-使用Objective-C进行iOS移动开发-iOS
使用Objective-C进行iOS移动开发 15年以上IT行业工作经验.8年以上IT行业教学经验.丰富的项目经验和授课经验,授课形式不拘一格.熟悉iOS开发,网页开发.Java开发.平面设计等技术, ...
- Android相机开发详解(一)
Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android相机 ...
- Android之Camera1实现相机开发
一.前言 现在很多app都会有拍照功能,一般调用系统进行拍照裁剪就能满足平时的需求,但有些场景或者特殊情况下如:持续不间断拍多张照片或者是进行人脸识别的时候,这时候之间调用系统原生相机拍照时不能满足自 ...
- iOS应用开发之权限说明
在iOS应用开发的过程中,需要配置info.plist文件给应用添加权限,该文件是键值对的形式.下面对info.plist文件中的部分权限进行说明,详细内容请以苹果开发者官网为准:https://de ...
- IOS入门开发大概课程内容记录
达内课程体系 第一阶段.Web开发基础(Linux操作系统.Nigix.XHTML技术核心.CSS技术核心):课程持续3周共96课时. 模块 课程目标 内容 项目 1 Mac Fundamental ...
最新文章
- 10.QT事件机制源码时序分析(中)
- linux检测远程端口是否打开
- 大规模数据处理开源软件
- 如何在JSP里自定义标签
- webdriver 的三种等待方式
- 想一个颠覆性技术方向建议,你能想到什么?
- java题-java运行时异常与一般异常有何异同?
- 《OpenGL编程指南(原书第9版)》——3.2 OpenGL缓存数据
- (转载)C#中如何获取当前路径的几种方法
- 寻找大富翁(堆排序)
- creo数控编程怎么样_世界一流数控编程软件,你都有了解过么?
- 水经注叠加cad_相见恨晚的50个CAD技巧
- Linux内核panic到ramdump基本流程
- 2022清明节放假安排来了,制定假日计划可用云便签软件
- 教小师妹学多线程,看完我写的例子,脸红成那样!
- WebGL-Shader入门(3.着色器语言的限定词-参数限定词/存储限定词/精度限定词)
- 斯坦福ML课程——python转写(Week7—课程作业ex6_2)
- Unity引擎及编辑器C#源代码赏析(一)—目录结构
- 00后大学生在数学真理阳光下学习微积分
- 揭秘HTML5小游戏排名,究竟哪些游戏最受欢迎?
热门文章
- 金山篡改浏览器主页问题(改成毒霸网址大全)
- 对于计算机课程的期待,关于初中计算机论文
- C语言编程入门(绪论)
- Linux/debian/ubuntu/deepin 等系统禁用鼠标中键(滚轮)按下粘贴的方法
- python 时间格式处理
- LA 4490 Help Bubu (状压DP)
- 计算圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
- 【三年面试五年模拟】算法工程师的独孤九剑秘籍(第十式)
- 正弦波形多波形叠加的音频文件生成工具v1.0使用说明
- 新的计算机的wifi连接无线网络连接,如何设置电脑优先连接无线WIFI网络