关于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来添加一个输出缓冲区

 

具体的使用参考 http://furnacedigital.blogspot.com/2012/11/avcapturestillimageoutput.html

                          http://furnacedigital.blogspot.tw/2012/11/avcapturevideodataoutput.html

 

你可能感兴趣的:(关于UIImagePickerController和AVCaptureSession的理解)