文档章节

ZBar 二维码扫描

伟大的盖茨梅
 伟大的盖茨梅
发布于 2016/07/21 15:40
字数 608
阅读 102
收藏 0
点赞 0
评论 0

      最 近在做的项目中需要用到二维码扫描功能,之前在使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识 别软件,并分别提供了iOS和Android的SDK可供使用,最终我选择了ZBar进行二维码识别,它的注释清晰,便于使用。

ZBar 为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar 提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制。

ZBar使用起来也非常简单,将ZBarSDK导入项目,在需要使用ZBar的文件中导入ZBarSDK.h头文件即可,以下是ZBarReaderView的初始化方法:

  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     _readerView = [[ZBarReaderView alloc] init];  
  5.     _readerView.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64);  
  6.       
  7.     _readerView.layer.cornerRadius = 8.0f;  
  8.     _readerView.layer.borderWidth= 1.0f;  
  9.     _readerView.layer.borderColor = [[UIColor blueColor] CGColor];  
  10.       
  11.     _readerView.readerDelegate = self;  
  12.     //关闭闪光灯  
  13.     _readerView.torchMode = 0;  
  14.       
  15.     //扫描区域  
  16.     CGRect scanMaskRect = CGRectMake(60, 60, 200, 200);  
  17.       
  18.     if (TARGET_IPHONE_SIMULATOR) {  
  19.         ZBarCameraSimulator *cameraSimulator = [[ZBarCameraSimulator alloc] initWithViewController:self];  
  20.         cameraSimulator.readerView = _readerView;  
  21.     }  
  22.     [self.view addSubview:_readerView];  
  23.   
  24.     //扫描区域计算  
  25.     _readerView.scanCrop = [self getScanCropWithScanRect:scanMaskRect andReaderViewBounds:_readerView.bounds];  
  26.       
  27.     [_readerView start];  

以上代码需要说明的有以下几点:
扫描区域计算
这 点比较重要,我们常用的二维码扫描软件的有效扫描区域一般都是中央区域,其他部分是不进行扫描的,ZBar可以通过ZBarReaderView的 scanCrop属性设置扫描区域,它的默认值是CGRect(0, 0, 1, 1),表示整个ZBarReaderView区域都是有效的扫描区域。我们需要把扫描区域坐标计算为对应的百度分数坐标,也就是以上代码中调用的 getScanCrop:readerViewBounds方法,亲测没有问题,如下所示:

  1. - (CGRect)getScanCropWithScanRect:(CGRect)rect andReaderViewBounds:(CGRect)rvBounds  
  2. {  
  3.     CGFloat x,y,width,height;  
  4.       
  5.     x = rect.origin.y / rvBounds.size.height;  
  6.     y = 1 - (rect.origin.x + rect.size.width) / rvBounds.size.width;  
  7.     width = rect.size.height / rvBounds.size.height;  
  8.     height = rect.size.width / rvBounds.size.width;  
  9.       
  10.     return CGRectMake(x, y, width, height);  
  11.       
  12. }  

初 始化部分完成之后,就可以调用ZBarReaderView的start方法开始扫描了,需要让你的类实现ZBarReaderViewDelegate 协议,在扫描到二维码时会调用delegate的对应方法。最后,当二维码已经识别时候,可以调用ZBarReaderView的stop方法停止扫描。 如下所示:

  •  - (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image
  • {
  •     for (ZBarSymbol *symbol in symbols) {
  •         NSLog(@"%@", symbol.data);
  •         break;
  •     }
  •  
  •     [self.readerView stop];
  • }

 好了,就这么多,是不是非常简单?

© 著作权归作者所有

共有 人打赏支持
伟大的盖茨梅
粉丝 0
博文 1
码字总数 608
作品 0
成都
程序员
python使用Zbar实现二维码/条形码检测识别流程

1、Zbar库安装: windows 10 上安装zbar(python) OpenCV+ZBar实现条码识别(Windows32位和64位) Win10x64+Zbar0.10+VS2015+Opencv3.0.0 https://sourceforge.net/projects/zbar/files/lates......

yongwan5637
05/31
0
0
学习IOS ,你早晚要了解这些东西

ARC:自动引用计数 MRC:手动内存管理引用计数 MRC-转换ARC: //忽略警告 pragma clang diagnostic push //#pragma clang diagnostic ignored "-Wmultichar" pragma clang diagnostic ignore......

RainOrz
2015/08/18
0
0
在 iOS 中使用 ZBar 扫描二维码

最近在做的项目中需要用到二维码扫描功能,之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Android的SDK可...

鉴客
2014/03/24
3.5K
2
android 二维码扫描算法优化问题

哪位大虾做过android二维码的优化问题么?最近在搞一个二维码扫描功能,zxing、zbar都试了下,感觉zbar更快吧,但是zbar是c写的,封装成so库看不到算法啊,找到文档都是ios的。。然后zxing反...

hzy00
2014/07/28
6.3K
1
二维码扫描工具和开发包--ZBar

ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台包括 iPhone 手机。同时 ZBar 提供了二维码扫描的 API 开发包。 ZBar 目前支持扫描,除了 Windows 平台外,还支...

匿名
2011/12/03
36.1K
0
android zbar二维码无法识别

最近在做zxing和zbar的性能测试,结果定点扫描时,发现zbar对旋转45°(+10°)的二维码扫描很不理想,扫都扫不出来。。。另外,在初始化时设置相机的参数setPreviewSize()也对预览图片大小...

hzy00
2014/07/31
1K
0
二维码扫描ViewController--GEQRCodeView

GEQRCodeView 是一个简单的二维码扫描 ViewController。简单易用。在 iOS7 下使用 Apple 提供的 SDK 扫描二维码,快速。为了兼容 iOS6,又将 zbar 集成进来。根据版本不同切换不同的引擎。 ...

叶秀兰
2014/08/26
512
0
Android QRCode 库--BGAQRCode

BGAQRCode 是 Android QRCode 库,主要有以下功能: ZXing 生成可自定义颜色、带 logo 的二维码 ZXing 扫描二维码 ZXing 识别图库中的二维码图片 可以设置用前置摄像头扫描 可以控制闪光灯,...

bingoogolapple
2016/06/22
1K
0
iOS - QRCode 二维码

1、QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing。iOS7 之后可以利用系统原生 API 生成二维码, iOS8 之后可以生成条形码, 系统默认生成...

仟0123
2016/09/15
0
0
AVFoundation扫描二维码,条形码

在使用AVFoundation之前用过,zbar,zxing来实现二维码的生成以及解析,但是未进行扫描二维码,通过查阅资料发现使用AVFoundation会更有优势。 zbar和zxing有哪些优劣势可以看看:http://ww...

HillYoung
2015/12/11
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
32分钟前
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部