iOS 中二维码扫描(zxingObjc和原生)

对于网上的第三方 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:曝光模式

Flash Mode:闪光灯模式

  • AVCaptureFlashModeOff:总是关闭闪光灯
  • AVCaptureFlashModeOn: 总是打开闪光灯
  • AVCaptureFlashModeAuto: 根据灯光条件决定是否开启闪光灯.

Torch Mode:手电筒模式

  • AVCaptureTorchModeOff: 总是关闭手电筒
  • AVCaptureTorchModeOn: 总是打开手电筒
  • AVCaptureTorchModeAuto: 按照需要自动决定是否开启手电筒

White Balance:白平衡模式

  • AVCaptureWhiteBalanceModeLocked: 固定的白平衡值
  • AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance: 相机按需自动调整白平衡值

AVCaptureDevicePosition:设备位置

AVCaptureDevicePositionUnspecified = 0,未指定位置

AVCaptureDevicePositionBack  = 1, 后置的摄像头

AVCaptureDevicePositionFront = 2 前置摄像头

时间: 2024-10-23 05:13:38

iOS 中二维码扫描(zxingObjc和原生)的相关文章

Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你当前的控制器中导入 #import <AVFoundation/AVFoundation.h> <AVCaptureMetadataOutputObjectsDelegate>代理 3).在@interface中定义 @property (nonatomic,strong)AVCapt

iOS中二维码的生成与使用(入门篇)

这里简单总结一下关于二维码的扫描与生成,用的是原生的AVFoundation框架,其实这个框架目前功能还是够用的,不过这里推荐一个二维码扫描的第三方(face++),网址就不贴了,直接度娘就OK,里面的内容足够丰富,感兴趣的朋友可以自己去倒弄一下. 一.二维码的扫描 步骤: 1.创建输入视频设备(默认是后置摄像头) 2.创建输入设备对象 3.创建元数据输出设备 4.创建session目的是将输入和输出联系在一起) 5.把输出设备添加到session,将输入设备添加到session 6.设置数据源

IOS二维码扫描IOS7系统实现

扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话.我们需要用到一下几个类: AVCaptureSession 会话对象.此类作为硬件设备输入输出信息的桥梁,承担实时获取设备数据的责任 AVCaptureDeviceInput 设备输入类.这个类用来表示输入数据的硬件设备,配置抽象设备的port AVCaptureMetadataOutput 输出类.这个支持二维码.条形码等图像数据的识别 AVCaptureVideoPrevie

iOS 二维码扫描报错问题之一

iOS 开发中在导入第三方的二维码扫描 ZBarSDK在模拟器能正常运行,但真机调试的过程中可能会报错,报错的信息如下目前的找到的一种解决办法如下图所示:在Build Settings里面搜bit  在BuildOptions里面修改Enable Bitcode为No,这样真机就可以正常运行了,如下图所示: 修改之后目前真机上可以正常运行

iOS二维码扫描,你需要注意的两件事

在 iOS7 以前,在iOS中实现二维码和条形码扫描,我们所知的有,两大开源组件ZBar与ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: ZBar ZBar在扫描的灵敏度上,和内存的使用上相对于ZXing上都是较优的,但是对于 “圆角二维码” 的扫描确很困难.如: ZXing ZXing 是 Google Code上的一个开源的条形码扫描库,是用java设计的,连Google Glass 都在使用的.但有人为了追求更高效率以及可移植性,出现了c++ port. Github上的Ob

ios 二维码扫描

https://github.com/bmorton/ZBarSDK 我是用ZBar做的二维码扫描 其他的SDK也可以 首先是导入库文件: 1.AVFoundation.framework 2.CoreMedia.framework 3.CoreVideo.framework 4.QuartzCore.framework 5.libiconv.dylib 这个5个库文件 在ViewController.h 导入#import "ZBarSDK.h" 并且 继承 <ZBarRead

iOS二维码扫描的实现(Swift)

随着二维码的普遍使用,二维码扫描也成为了很多app的一个基本功能,本篇主要来介绍一下如何实现一个简单的二维码扫描功能.本文使用了XCode自带的AVFoundation 库,利用Swfit语言实现. 实现的步骤如下: 1.获取视频设备(Video) 在二维码扫描中,我们的输入流是视频.我们需要enable视频设备来获取相应的元数据. 2. 创建Session来处理视频的输入输出流 3. 创建输入输出流,并添加至Session中 4. 处理二维码数据 该方法是AVCaptureMetadataOu

iOS二维码扫描

测试环境:iPhone 5s  iOS7.1 首先添加框架AVFoundation.framework,然后导入自定义类CMCaptureViewController.h.CMCaptureViewController.m,以及用到的图片资源:[email protected].[email protected]. 用的时候只需要切换到二维码视图控制器CMCaptureViewController即可,会跳到二维码扫描界面 如: 1 [self presentViewController:cap

ios中二维码的使用

iOS在7之后,具备了原生的二维码生成API; 生成二维码的准备:  #import <CoreImage/CoreImage.h> 导入框架: 开始生成: //1- 创建过滤器 CIFilter * filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; //2- 恢复过滤器的默认设置 [filter setDefaults]; //3- 给过过滤器赋值 (扫描二维码后的显示信息) NSString * dataS