iOS iOS自定义相机机自动对焦拍照求助

b、AVCaptureInput。这里代表输入设备(可以是它的子类),它配置抽象硬件设备的ports。 c、AVCaptureOutput。它代表输出数据,管理着输出到一个movie或者图像。
}

自定义相机  提供两个链接:


第一种:使用iOS系统自带相机。

 //判断是否可以打开相机,模拟器此功能无法使用

//拍摄完成后,要执行的方法

//判断是否可以打开相机,模拟器此功能无法使用 //拍摄完成后,要执行的方法 用于拍照时,图片存入相册 在AVFoundation框架下使用自定义照相需要的属性 //AVCaptureSession对象来执行输入设备和输出设备之间的数据传递 //预览图层,来显示照相机拍摄到的画面 //切换前后镜头的按钮 //放置预览图层的View //初始化自定义相机的各实例 初始化自定义照相的相关实例 //03 创建输出设备 // 这是输出流的设置参数AVVideoCodecJPEG参数表示以JPEG的图片格式输出图片 //如果不允许相机拍照,则返回
}

 关于iOS调用摄像机来获取照片,通常我们都会调用UIImagePickerController来调用系统提供的相机来拍照,这个控件非常好用。但是有时UIImagePickerController控件无法满足我们的需求,例如我们需要更加复杂的OverlayerView,这时候我们就要自己构造一个摄像机控件了。

 媒体采集需要的几个对象:

 2AVCaptureInput: 代表输入设备(可以是它的子类),它配置抽象硬件设备的ports

 那么存在一个问题了:视频输入(input)就对应视频的输出(output),而音频输入就对应音频的输出,因而需要建立对应的Connections,来各自连接它们。而这样的连接对象,是由AVCaptureSession来持有的,这个对象叫AVCaptureConnection

 这里表明了,需要create一个session,然后发running消息给它,它会自动跑起来,把输入设备的东西,提交到输出设备中。

 若想在一个已经使用上的session(已经startRunning)做更换新的device、删除旧的device等一系列的操作,那么就需要使用如下方法:

Reference中的Notifications中找到相应的情况),而session如果出现相应问题的时候,它会post出来,此时我们就可以处理了。

  那么显然,我们可以通过AVCaptureDevice的类方法devicesdevicesWithMediaType去获取全部或局部设备列表。(当然也可以检测相应的设备是否可以使用,这里注意有设备抢占问题,当前是否可用)

 相机设备可以用下面的方法判断设备是否支持相关属性(property),比如对焦方式或者对焦状态Focus modes

1. 前置和后置摄像头

 创建并配置输入设备

// 添加inputsession的模式是(检查可否添加到session,然后根据情况添加或者不添加)

第一个是输出成movie文件,第二个适用于逐个Frame的处理,第三个适用于声音采集,第四个是still image(静态图像<拍照>)相关。

// AVCaptureSession对象来执行输入设备和输出设备之间的数据传递

// 预览图层,来显示照相机拍摄到的画面

// 切换前后镜头的按钮

// 用来展示拍照获取的照片

// 这是获取前后摄像头对象的方法

UIView的clipsToBounds属性和CALayersetMasksToBounds属性表达的意思是一致的,决定子视图的显示范围。当取值为YES的时候,剪裁超出父视图范围的子视图部分,当取值为NO时,不剪裁子视图。

// 这是拍照按钮的方法

// 这是切换镜头的按钮方法


}

我要回帖

更多关于 iOS自定义相机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信