关于Zbar扫描


关于Zbar扫描  

http://supershll.blog.163.com/blog/static/370704362012112843817769/


ZBar的简单使用

http://blog.csdn.net/ioselite/article/details/24264481

代码需要用到扫码,找了找ZXing和ZBar,自我感觉ZBar要略胜一筹。现在就记录下如何使用ZBar

第一步,找地方下载ZBarSDK,例如GitHub(https://github.com/bmorton/ZBarSDK),或者Code4App (http://code4app.com/ios/ZBar-Barcode-Reader/4fa23f3f06f6e7ee18000000),不过GitHub上没有Document文档,他让去官网看,但是连不上-_-! Code4App里有文档,下载好了的

第二步,将ZBarSDK文件夹加入copy到工程中(这一点和Zxing不一样),包括Headers文件夹和libzbar.a,然后按照官方文档说明加入一些Framework: AVFoundation.framework (weak)、CoreMedia.framework (weak)、 CoreVideo.framework (weak)、 QuartzCore.framework、 libiconv.dylib。

第三步,使用:使用起来就很简单了。
1)首先 #import "ZBarSDK.h"
2)  在需要调出扫描界面的地方 使用如下代码:
ZBarReaderViewController *reader = [[ZBarReaderViewController alloc]init];
reader.readerDelegate=self; //self需要实现ZBarReaderDelegate协议
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner = reader.scanner;
// TODO: (可选) 配置reader的一些参数
// 例如: 禁用很少使用的I2/5来改善性能
[scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

// present and release the controller
[self presentModalViewController: reader  animated: NO];//这里例子给的是YES,但是测试的时候发现虽然NO出来不太好,但是如果是动画出来的话,扫描结果出来过快的话,会Dismiss Controller失效,猜想是还没有Present出来就Dismiss的原因。所以个人感觉使用NO会好一点
[reader release];

说明:ZBarReaderViewController是继承的UIImagePickerController, ZBarReaderDelegate协议也是继承的UIImagePickerControllerDelegate协议(它自己又添加了一个可选方法,可以Command+左键 点进去看看)

3)最后,实现代理方法
- (void) imagePickerController: (UIImagePickerController*)reader didFinishPickingMediaWithInfo: (NSDictionary*) info
{
    // ADD: 获取解码结果
    id<NSFastEnumeration> results =[info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results) {
        // 例子: 只获取第一个BarCode
        break;
    }
   //处理中文乱码问题
    NSString *resultStr=symbol.data;
    if ([resultStr canBeConvertedToEncoding:NSShiftJISStringEncoding]) { 
        resultStr = [NSString stringWithCString:[resultStr cStringUsingEncoding: NSShiftJISStringEncoding]  encoding:NSUTF8StringEncoding]; 
    }

    // 例子: 处理文本结果
    resultText.text = resultStr;

    // 例子: 处理barcode图片
    resultImage.image = [info objectForKey: UIImagePickerControllerOriginalImage];

    // ADD: dismiss the controller
    [self dismissModalViewControllerAnimated: YES];
}

好了,如果只是简单的扫下码,这些代码应该也够了。

如果要更多的了解,就去官网看文档吧,或者从Code4App那里下载的文件里找Documentation.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值