ZBarSDK是二维码/条码读写的一个库。
这个库是开源的,下载源码请点击这里。
我们平时看到的libzbar.a和一堆头文件是编译后的产物,相对于Google的二维码/条码识别库还是快很多的,现在应用也十分广泛,所以要用到二维码或者条码生成,读取等功能的时候,建议适用这个库。
zbarsdk在pod上是有托管的,我们可以用cocoapods自己导入;
pod search zbarsdk
修改podfile,加入pod 'ZBarSDK', '~> 1.3.1'
pod install
对于不熟悉cocoapods的人,可以去下载别人编译好的libzbar.a文件和它的头文件。
使用方法如下:
导入相关frameworks:“AVFoundation.framwork, CoreMedia.framework, CoreVideo.framework, libiconv.tbd”(对于pod导入的,略去这步,pod自己会配置好)
把zbarsdk导入工程。
#import "ZBarSDK.h"
//这里提醒一句,不要忘记设置委托
//委托是这个<ZBarReaderDelegate>
- (void)viewDidLoad
{
[superviewDidLoad];
//添加一个button,方便我们调整界面
UIButton *btn = [[UIButtonalloc] initWithFrame:CGRectMake(30,70, 50,35)];
btn.backgroundColor = [UIColorlightGrayColor];
[btn setTitle:@"点击我"forState:UIControlStateNormal];
[btn addTarget:selfaction:@selector(presentZbarView)forControlEvents:UIControlEventTouchUpInside];
[self .viewaddSubview:btn];
}
//button的点击方法
//这里面我们初始化zbarview,并跳转界面
-(void)presentZbarView
{
ZBarReaderViewController *reader = [[ZBarReaderViewControlleralloc] init];
reader.readerDelegate =self;
//隐藏底部控制按钮
reader.showsZBarControls =YES;
//设置自己定义的界面
//reader.cameraOverlayView = someView;(这个视图可以自己定义,当然你也可以通过[reader.view addSubview:someView]的方式添加蒙版视图,这样可以做出自己想要的视图效果)
//设置识别范围(这里的4个参数都是视图比例~~不要搞错奥(距离左边的比例,距离上边的比例,识别宽度的比例,识别高度的比例))
//reader.scanCrop =CGRectMake(0,0, 1,1);
//设置识别的参数
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology:ZBAR_I25 //这个参数和to:后面的参数配合确定了识别的编码范围,根据需求调整,可以提高识别速度。
config:ZBAR_CFG_ENABLE
to:0];
[selfpresentViewController:reader animated:YEScompletion:nil];
}
//下面是委托方法
- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results =[infoobjectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol =nil;
for(symbolin results)
break;
NSLog(@"%@",symbol.data);//打印识别的数据
[reader dismissModalViewControllerAnimated:YES];
}
到这里结束了,最简单的识别实现,提高识别效率可以设置合适的识别区域,并设置合适的编码识别范围。