您的位置:首页 > 移动开发 > IOS开发

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 前置摄像头

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: