码迷,mamicode.com
首页 > 其他好文 > 详细

二维码扫描与生成

时间:2015-03-28 20:11:07      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

为了方便下载挂一个百度盘链接,包含:

1.ZBarSDK .a文件(armv7 arm64和armv7 arm64 i386两种,如有其他需求请自行生成)

2.ZBarSDK

3.libqrencode

4.ZBar相机扫描 相册扫描 iOS原生相机扫描 和 libqrencode生成二维码示例程序

 

(一)二维码扫描之ZBarSDK的使用

1.1 生成.a文件

(1)打开ZBar-master/iphone/zbar.xcodeproj

技术分享

(2)更改Architectures

技术分享

(3)如果弹出警告,点change

技术分享

关于armv7 armv7s arm64 i386 x86_64 Architextures Valid Architectures等介绍,请点这里

通过此链接文章可以得知,我这样设置后生成.a文件的真机指令集为 (armv7 armv7s arm64) ∩ (armv7 arm64) = armv7 arm64

(4)选择真机或iOS Device

技术分享

command + B 编译,可以在左侧Products中看到libzbar.a为黑色

技术分享

(5)选择任一模拟器

技术分享

command + B 编译

(6)顶部导航栏,Product-Scheme-Edit Scheme-Run-Info-Build Configuration选择Release

技术分享

重复(4)(5)操作

1.2 .a文件合并与选取

(1)选择生成的.a文件,Show in Finder

技术分享

可以发现它的上一级有4个文件夹,每个文件夹中都有一个.a文件

技术分享

从上到下依次是: 调试-真机 调试-模拟器 发布-真机 发布-模拟器

(2)打开终端,切换目录到当前文件夹

技术分享

(3)通过命令lipo -info xxx.a,可以查看其支持的指令集

技术分享

Debug和Release文件夹中得.a文件大小是不同的,这里我选择调试用Debug中的文件发布用Release中的文件

程序调试阶段将Debug-iphoneos/libzbar.a和Debug-iphonesimulator/libzbar.a合并,既可以在模拟器运行也可以真机调试

技术分享

程序发布阶段,直接用Release-iphoneos/libzbar.a,只面向真机,比合并的文件要小

(4)上一步生成的.a文件和工程中ZBarSDK文件夹包含的头文件就是我们需要的东西了

技术分享

1.3 使用

(1)先导入几个框架

 技术分享

(2)使用ZBarReaderController扫描

属性蛮多,可以按需求设置

1     ZBarReaderController *zbarVC = [[ZBarReaderController alloc] init];
2     zbarVC.showsHelpOnFail = NO;
3     zbarVC.sourceType = UIImagePickerControllerSourceTypeCamera;
4     zbarVC.readerDelegate = self;
5     ZBarImageScanner *scanner = zbarVC.scanner;
6     //禁用很少使用的I2/5来改善性能
7     [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];
8     [self presentViewController:zbarVC animated:YES completion:nil];

代理方法中取到二维码信息

 1 - (void) imagePickerController: (UIImagePickerController*) reader
 2  didFinishPickingMediaWithInfo: (NSDictionary*) info
 3 {
 4     id<NSFastEnumeration> results =
 5     [info objectForKey: ZBarReaderControllerResults];
 6     ZBarSymbol *symbol = nil;
 7     for(symbol in results)
 8         break;
 9     [self dismissViewControllerAnimated:YES completion:nil];
10     self.displayLabel.text = symbol.data;
11 }

(3)使用ZBarReaderView扫描,方法和上面基本相同

1     ZBarImageScanner *scanner = [[ZBarImageScanner alloc] init];
2     [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];
3     ZBarReaderView *readerView = [[ZBarReaderView alloc] initWithImageScanner: scanner];
4     readerView.frame = CGRectMake(x, y, w, h);
5     readerView.readerDelegate = self;
6     self.readerView = readerView;
7     [self.view addSubview:readerView];

代理方法

1 - (void) readerView: (ZBarReaderView*) readerView didReadSymbols: (ZBarSymbolSet*) symbols fromImage: (UIImage*) image{
2     NSString *data;
3     for (ZBarSymbol *sym in symbols) {
4         data = sym.data;
5         break;
6     }
7     _myBlock(data);
8     [self dismissViewControllerAnimated:YES completion:nil];

 

(二)二维码扫描之iOS原生方法

挺长的,不贴了,见顶部示例程序

小插曲: 刚才测试时候用了一张形状不规则颜色片花哨的二维码,结果扫了半天也扫不上,用ZBar秒扫,最后换了一张普通的二维码一下就扫到了

 

(三)libqrencode生成二维码

非常简单,导入文件,一句代码就可以生成二维码

 self.qrCodeImgView.image = [QRCodeGenerator qrImageForString:self.textField.text imageSize:self.qrCodeImgView.frame.size.width]; 

 

二维码扫描与生成

标签:

原文地址:http://www.cnblogs.com/lanchengyu/p/4371345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!