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:曝光模式
- AVCaptureExposureModeContinuousAutoExposure: 按需要自动调整曝光度。
- AVCaptureExposureModeLocked: 固定的曝光度。
Flash Mode:闪光灯模式
- AVCaptureFlashModeOff:总是关闭闪光灯
- AVCaptureFlashModeOn: 总是打开闪光灯
- AVCaptureFlashModeAuto: 根据灯光条件决定是否开启闪光灯.
Torch Mode:手电筒模式
- AVCaptureTorchModeOff: 总是关闭手电筒
- AVCaptureTorchModeOn: 总是打开手电筒
- AVCaptureTorchModeAuto: 按照需要自动决定是否开启手电筒
White Balance:白平衡模式
- AVCaptureWhiteBalanceModeLocked: 固定的白平衡值
- AVCaptureWhiteBalanceModeContinuousAutoWhiteBalance: 相机按需自动调整白平衡值
AVCaptureDevicePosition:设备位置
AVCaptureDevicePositionUnspecified = 0,未指定位置
AVCaptureDevicePositionBack = 1, 后置的摄像头
AVCaptureDevicePositionFront = 2 前置摄像头
iOS 中二维码扫描(zxingObjc和原生)的更多相关文章
- iOS 中二维码扫描
随着微信的大量推广,越来越多的人会在生活中用到二维码这一个方便大家的功能. 因此,很多的app中也逐渐的都加入了二维码这个元素,今天先给大家介绍一下iOS7后系统自带自己可以手动设计的二维码扫描. Q ...
- Ios二维码扫描(系统自带的二维码扫描)
Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...
- iOS - 二维码扫描和应用跳转
序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如ZXing或者ZBar.使用时集成麻烦, ...
- iOS二维码扫描IOS7系统实现
扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话.我们需要用到一下几个类: AVCaptureSession 会话对象.此类作为硬件 ...
- iOS中二维码的生成与使用(入门篇)
这里简单总结一下关于二维码的扫描与生成,用的是原生的AVFoundation框架,其实这个框架目前功能还是够用的,不过这里推荐一个二维码扫描的第三方(face++),网址就不贴了,直接度娘就OK,里面 ...
- ios二维码扫描插件,适配当前主流扫描软件,自定义扫描界面。
二维码介绍: 二维码(QR(Quick Response)code),又称二维条码,最早起源于日本. 它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,是所有信息 ...
- iOS二维码扫描的实现(Swift)
随着二维码的普遍使用,二维码扫描也成为了很多app的一个基本功能,本篇主要来介绍一下如何实现一个简单的二维码扫描功能.本文使用了XCode自带的AVFoundation 库,利用Swfit语言实现. ...
- ios中二维码的使用之二: 二维码的扫描
二维码的扫描: 1,导入支持框架,<AVFoundation/AVFoundation.h> 2 ,扫描:
- ios中二维码的使用之一: 二维码的生成
iOS在7之后,具备了原生的二维码生成API; 生成二维码的准备: #import <CoreImage/CoreImage.h> 导入框架: 开始生成: //1- 创建过滤器 CIFi ...
随机推荐
- 支持度(support)和置信度(confidence)
支持度(Support)的公式是:Support(A->B)=P(A U B).支持度揭示了A与B同时出现的概率.如果A与B同时出现的概率小,说明A与B的关系不大:如果A与B同时出现的非常频 ...
- spoj 1812 LCS2(SAM+DP)
[题目链接] http://www.spoj.com/problems/LCS2/en/ [题意] 求若干个串的最长公共子串. [思路] SAM+DP 先拿个串建个SAM,然后用后面的串匹配,每次将所 ...
- POJ 1458 Common Subsequence 最长公共子序列 LCS
LCS #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> ...
- ZOJ-2362 Beloved Sons 贪心 | KM
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2362 裸的匹配问题,直接KM,就算是O(n^4)的KM也不会超. ...
- linux下mysql的表名问题
最近从win转移到了linux,在本机跑好的程序但在linux下一个SQL语句报了错误,发现是表名未找到,错误原因是在linux下mysql的表名是严格区分大小写的.. MYSQL在LINUX下数据库 ...
- 第一个php网页
<?php date_default_timezone_set('PRC'); if($_POST[ok]) { //echo "记录"; //echo "here ...
- linux 查看cpu 内存 硬盘 文件夹大小
文件夹大小 显示cpu使用率 top 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | w ...
- Apache CXF框架结构和基本原理(转)
原文链接:http://blog.sina.com.cn/s/blog_6182547f01017pak.html CXF旨在为服务创建必要的基础设施,它的整体架构主要由以下几个部分组成: 1.Bus ...
- Jquery UI 组合树 - ComboTree 集成Wabacus4.1 代码剖析
Jquery UI 1.3 (组合树 - ComboTree ) 集成Wabacus4.1 集成Spring 代码剖析 使用时,请下载需要Jquery ui包进行配置 combotree.js 的代码 ...
- PHP扩展开发01:第一个扩展【转】
我们先假设业务场景,是需要有这么一个扩展,提供一个叫ccvita_string的函数,他的主要作用是返回一段字符.(这个业务场景实在太假,大家就这么看看吧)对应的PHP代码可能是这样: functio ...