公司iOS项目需要用到二维码扫描,本来已经有人写好了,但是扫描速度不太快,于是让我接手研究一下。之前也没接触过二维码扫描,写这篇博客献给新手。
先来二维码生成吧,二维码生成需要libqrencode库,将libqrencode库下载下来拖入工程
(文章末会提供下载链接),
在QRCodeGenerator.h中#import<UIKit/UIKit.h>,否则会报错。
使用举例:UIImage *image =[QRCodeGenerator qrImageForString:<#(NSString *)#> imageSize:<#(CGFloat)#>];
直接调用 QRCodeGenerator qrImageForString:<#(NSString *)#> imageSize:<#(CGFloat)#>就可以生成二维码图片,其中string可以是任何字符串,imageSize是生成图片的大小
二维码扫描:现在主流二维码扫描有zbar和zxing两大开源组件
ZBar在扫描的灵敏度上,和内存的使用上相对于ZXing上都是较优的,但是对于 “圆角二维码” 的扫描确很困难
ZXing 是 Google Code上的一个开源的条形码扫描库,是用java设计的,连Google Glass 都在使用的。但有人为了追求更高效率以及可移植性,出现了c++ port. Github上的Objectivc-C port,其实就是用OC代码封装了一下而已,而且已经停止维护。这样效率非常低,在instrument下面可以看到CPU和内存疯涨,在内存小的机器上很容易崩溃。
iOS6后,苹果提供了原生的二维码扫描AVFoundation,AVFoundation无论在扫描灵敏度和性能上来说都是最优的。缺点是不能扫描相册中的二维码,条码扫描不如zbar,不支持iOS6以前的版本。所以有的项目可能需要两种扫描相结合
先来说说zbar吧,公司之前用的就是zbar,由于公司放入二维码的数据有点多,二维码又大又密,扫描的确需要花一定的时间。
先下载zbar导入工程,在build phases的link binary 目录下导入如下库