iOS 中二维码扫描(zxingObjc和原生)
2015-11-10 11:33
375 查看
对于网上的第三方 ZXingObjC,自我感觉是对原生的AVFoundation中关于二维码部分的一个封装,大致看看ZXingObjC的内部实现其事和原生的实现相似的,里面都用到了AVFoundation框架中的几个类:AVCaptureSession,AVCaptureDevice,AVCaptureInput,AVCaptureOutput.刚看到这几个类以及类内部的属性和变量的时候,完全不知道是什么,慢慢的才有了了解:
官网对这几个类的解释是:
An instance of AVCaptureDevice to represent the input device, such as a camera or microphone
An instance of a concrete subclass of AVCaptureInput to configure the ports from the input device
An instance of a concrete subclass of AVCaptureOutput to manage the output to a movie file or still image
An instance of AVCaptureSession to coordinate the data flow from the input to the output
从官网可以了解到:
1. AVCaptureDevice 即为输入数据的设备,比如相机,麦克风等;
2. AVCaptureInput (抽象类 下面会有多个子类如AVDeviceCaptureInput)用于配置输入设备的端口(这个端口用AVCaptureInputPort表示,这个端口代表了从输入设备输入的数据流的类型,数据流的类型有多种:
NSString *const AVMediaTypeVideo;
NSString *const AVMediaTypeAudio;
NSString *const AVMediaTypeText;
NSString *const AVMediaTypeClosedCaption;
NSString *const AVMediaTypeSubtitle;
NSString *const AVMediaTypeTimecode;
NSString *const AVMediaTypeTimedMetadata;
NSString *const AVMediaTypeMetadata;
NSString *const AVMediaTypeMuxed;
比如AVDeviceCaptureInput就有一个用于表示 “视频数据流:AVMediaTypeVideo”的端口);
3.AVCaptureOutput 表示捕获数据输出管理 用于表示将数据输出的数据类型为视频文件或者图片;
4.AVCaptureSession 用于协调输入数据流一直到输出数据的处理过程。
下面的官网的一张图片展示了这几个类之间的关系
在将AVCaptureInput和AVCaptureOutput添加到session中的时候会创建一个AVCaptureConnection,用于去在输入和输出之间建立连接
下面说一下关于AVCaptureDevice的几个属性
Focus Mode:聚焦模式
AVCaptureFocusModeLocked: 固定的焦点位置。
AVCaptureFocusModeAutoFocus: 自动聚焦一次就返回到焦点锁定的状态 锁定到你聚焦的那个焦点。
AVCaptureFocusModeContinuousAutoFocus:在需要的时候持续自动聚焦。
Exposure Mode:曝光模式
AVCaptureExposureModeContinuousAutoExposure: 按需要自动调整曝光度。
AVCaptureExposureModeLocked: 固定的曝光度。
Flash Mode:闪光灯模式
AVCaptureFlashModeOff:总是关闭闪光灯
AVCaptureFlashModeOn: 总是打开闪光灯
AVCaptureFlashModeAuto: 根据灯光条件决定是否开启闪光灯.
Torch Mode:手电筒模式
AVCaptureTorchModeOff: 总是关闭手电筒
AVCaptureTorchModeOn: 总是打开手电筒
AVCaptureTorchModeAuto: 按照需要自动决定是否开启手电筒
White Balance:白平衡模式
AVCaptureWhiteBalanceModeLocked: 固定的白平衡值
AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance: 相机按需自动调整白平衡值
AVCaptureDevicePosition:设备位置
AVCaptureDevicePositionUnspecified = 0,未指定位置
AVCaptureDevicePositionBack = 1, 后置的摄像头
AVCaptureDevicePositionFront = 2 前置摄像头
官网对这几个类的解释是:
An instance of AVCaptureDevice to represent the input device, such as a camera or microphone
An instance of a concrete subclass of AVCaptureInput to configure the ports from the input device
An instance of a concrete subclass of AVCaptureOutput to manage the output to a movie file or still image
An instance of AVCaptureSession to coordinate the data flow from the input to the output
从官网可以了解到:
1. AVCaptureDevice 即为输入数据的设备,比如相机,麦克风等;
2. AVCaptureInput (抽象类 下面会有多个子类如AVDeviceCaptureInput)用于配置输入设备的端口(这个端口用AVCaptureInputPort表示,这个端口代表了从输入设备输入的数据流的类型,数据流的类型有多种:
NSString *const AVMediaTypeVideo;
NSString *const AVMediaTypeAudio;
NSString *const AVMediaTypeText;
NSString *const AVMediaTypeClosedCaption;
NSString *const AVMediaTypeSubtitle;
NSString *const AVMediaTypeTimecode;
NSString *const AVMediaTypeTimedMetadata;
NSString *const AVMediaTypeMetadata;
NSString *const AVMediaTypeMuxed;
比如AVDeviceCaptureInput就有一个用于表示 “视频数据流:AVMediaTypeVideo”的端口);
3.AVCaptureOutput 表示捕获数据输出管理 用于表示将数据输出的数据类型为视频文件或者图片;
4.AVCaptureSession 用于协调输入数据流一直到输出数据的处理过程。
下面的官网的一张图片展示了这几个类之间的关系
在将AVCaptureInput和AVCaptureOutput添加到session中的时候会创建一个AVCaptureConnection,用于去在输入和输出之间建立连接
下面说一下关于AVCaptureDevice的几个属性
Focus Mode:聚焦模式
AVCaptureFocusModeLocked: 固定的焦点位置。
AVCaptureFocusModeAutoFocus: 自动聚焦一次就返回到焦点锁定的状态 锁定到你聚焦的那个焦点。
AVCaptureFocusModeContinuousAutoFocus:在需要的时候持续自动聚焦。
Exposure Mode:曝光模式
AVCaptureExposureModeContinuousAutoExposure: 按需要自动调整曝光度。
AVCaptureExposureModeLocked: 固定的曝光度。
Flash Mode:闪光灯模式
AVCaptureFlashModeOff:总是关闭闪光灯
AVCaptureFlashModeOn: 总是打开闪光灯
AVCaptureFlashModeAuto: 根据灯光条件决定是否开启闪光灯.
Torch Mode:手电筒模式
AVCaptureTorchModeOff: 总是关闭手电筒
AVCaptureTorchModeOn: 总是打开手电筒
AVCaptureTorchModeAuto: 按照需要自动决定是否开启手电筒
White Balance:白平衡模式
AVCaptureWhiteBalanceModeLocked: 固定的白平衡值
AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance: 相机按需自动调整白平衡值
AVCaptureDevicePosition:设备位置
AVCaptureDevicePositionUnspecified = 0,未指定位置
AVCaptureDevicePositionBack = 1, 后置的摄像头
AVCaptureDevicePositionFront = 2 前置摄像头
相关文章推荐
- iOS9的新特性以及适配方案-----转载
- iOS高级之团队协作开发(svn)
- 苹果开发 笔记(91)cocopods 插件升级问题记录
- iOS开发-自动消失的弹出框
- iOS_CoreFoundation_汉字转换拼音的实现
- [转][译]关于iOS和OS X废弃的API你需要知道的一切
- iOS学习笔记39-iOS开发,谓词(NSPredicate)的用法:(二)谓词和正则表达式配合使用,进行表单内容判断
- iOS通知的实现
- ios小数向上、下取整,计算结果向上、下取整
- iOS开发拓展篇—CoreLocation定位服务
- iOS 手写输入法奔溃,替换隐藏键盘方法
- iOS-----解决Prefix Header出错的问题
- iOS Runtime应用实例(一)类别添加属性
- ios8.0下CLLocationManager定位服务需要授权了
- iOS initWithFrame 和 initWithCoder的使用以及区别
- ios调度EXC_BAD_ACCESS
- IOS开源项目Coding学习笔记(3):注册界面RegisterViewController
- JSPatch库, 一个Apple官方支持的实现在线更新iOS应用的库
- ios 开发的好用的第三方框架。。。。
- JSPatch库, 一个Apple官方支持的实现在线更新iOS应用的库