关于UIImagePickerController和AVCaptureSession的理解

关于UIImagePickerController和AVCaptureSession的理解

  一、UIimagePickerController 用于控制和调用系统自带的媒体类型,设置实例的sourceType属性为一下三种类型就可以使用相对应的系统的资源

  1.UIImagePickerControllerSourceTypePhotoLibrary(系统的照片库选择照片);

  2.UImagePickerControllerSourceTypeSavedPhotosAlbum(只能在保存的相册中选择照片);

  3.UImagePickerControllerSourceTypeCamera(使用系统照相机来获取图片或视频)

  因此我们可以既可以从本地获取图片,也可以调用照相机来获取。当我们完成了获取图片和选择了用照相机拍下的照片或视频式或者取消了这写操作式。它就调用它的代理。

  1. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;

  可以根据字典型的参数 info 的keys 来获取相应的数据,下面式 info的keys值:

  (1).UIImagePickerControllerMediaType; // an NSString (UTI, i.e. kUTTypeImage)

  (2).UIImagePickerControllerOriginalImage; // a UIImage

  (3).UIImagePickerControllerEditedImage; // a UIImage

  (4).UIImagePickerControllerCropRect; // an NSValue (CGRect)

  (5).UIImagePickerControllerMediaURL; // an NSURL

  (6).UIImagePickerControllerReferenceURL //参考一个有用的资源在AssetsLibrary framework

  (7).UIImagePickerControllerMediaMetadata  // 包含拍摄照片的元数据

  2. - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

  用于取消操作时调用的代理。

  一些属性: (1). cameraOverlayView //可以自己定制Camer拍摄页面

  (2).videoQuality //拍摄Video的质量

  (3).showsCameraControls // 布尔型 默认为YES,如果你设置为NO,将会隐藏camera UI

  (4).allowsEditing //布尔型 默认为NO ,为YES可以编辑图片和视频。

  UIImgePickercontroller处理的并不是原始摄像头数据, 它是在原始数据被处理成图像后才开始访问。

  所以UIImagePickerController可以用于简单的媒体捕捉,通过设置属性sourceType和captureMode可以设置使用前置摄像头还是后置摄像头,让它以不同的分辨率捕捉静止图像或者视频。不过AVFountion能在原始数据编程图像之前就可以访问它。

  二、

  1.AVCaptureSession用来控制设备(AVCaptureDeviceInput)视频图像到流入输出缓存区(AVCaptureOutput)的过程。一旦AVCature启动以后,就会收集来自输入设备的信息,并在适当的时候将这些信息输出到数据缓冲区中。

  2.AVCaptureVideoPreviewLayer默认情况下会显示来自输入设备的原始数据,是个预览图层。如果要实现实时滤镜或在这个图层上绘制额外的物体,那么就要从视频输出缓冲区获取数据帧数据,并对其进行处理,处理完毕后可将像素数据输出到另一个图层或者OpenGL上下文中。

  3.AVCaptureConnection 用来在AVCaptureInput和ACaptureOutput之间建立连接 。 AVCaptureSession必须从AVCaptureConnection中获取实际数据。

  4.AVCaptureDevice可以用来创建必要的输入捕捉设备如摄像头。

  5.AVCaptureStillImageOutput或者AVCaptureVideoDataOutput来添加一个输出缓冲区






  • AVCaptureSession 管理输入(AVCaptureInput)和输出(AVCaptureOutput)流,包含开启和停止会话方法。
  • AVCaptureDeviceInput 是AVCaptureInput的子类,可以作为输入捕获会话,用AVCaptureDevice实例初始化。
  • AVCaptureDevice 代表了物理捕获设备如:摄像机。用于配置等底层硬件设置相机的自动对焦模式。
  • AVCaptureMetadataOutput 是AVCaptureOutput的子类,处理输出捕获会话。捕获的对象传递给一个委托实现AVCaptureMetadataOutputObjectsDelegate协议。协议方法在指定的派发队列(dispatch queue)上执行。
  • AVCaptureVideoPreviewLayerCALayer的一个子类,显示捕获到的相机输出流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值