`
zxs19861202
  • 浏览: 916020 次
  • 性别: Icon_minigender_1
  • 来自: 湖北—》上海
社区版块
存档分类
最新评论

ios 使用ZBar读取条形码和二维码

    博客分类:
  • ios
 
阅读更多

1.使用ZBar项目。下载地址是: http://zbar.sourceforge.net/iphone/index.html

2.新建一个项目。

3.导入 ZBar的sdk。把ZBar SDK的目录拉入项目,然后选中copy选项(见附件)

4.在项目文件的target中加入 以下framework


 

5、.h代码为:

#import <UIKit/UIKit.h>

#import "ZBarSDK.h"

 

@protocol ScanCodeViewDelegate <NSObject>

 

-(void)finishRead:(NSString *)barCode;

 

@end

 

@interface ScanCodeViewController : UIViewController<ZBarReaderViewDelegate>{

    

    id<ScanCodeViewDelegate> delegate;

    

    UIImageView *lineView;

    

}

 

@property (weak, nonatomic) IBOutlet ZBarReaderView *readerView;

 

@property(assign,nonatomic) id<ScanCodeViewDelegate> delegate;

 

 

 

@end

 

6、.m代码为:

- (void)viewDidLoad

{

    [super viewDidLoad];

    self.title=@"条形码扫描";

    

    self.navigationItem.rightBarButtonItem = [ViewUitls getRightUIBarButtonItem:@"取消" target:self action:@selector(cancelScan)];

    

    _readerView.readerDelegate = self;

    //关闭闪光灯

    _readerView.torchMode = 0;

    //取消手动对焦

    _readerView.allowsPinchZoom=NO;

    

    //扫描区域,这里可以自己调整

    CGRect scanMaskRect = CGRectMake(100, CGRectGetMidY(_readerView.frame) - 126, 250, 250);

    

    //处理模拟器

    if (TARGET_IPHONE_SIMULATOR) {

        ZBarCameraSimulator *cameraSimulator

        = [[ZBarCameraSimulator alloc]initWithViewController:self];

        cameraSimulator.readerView = _readerView;

    }

    [self.view addSubview:_readerView];

    //扫描区域计算

    

    CGRect scanCrop=[self getScanCrop:scanMaskRect readerViewBounds:self.readerView.bounds];

    _readerView.scanCrop = scanCrop;

    

   //这里添加了一个类似微信的扫描框,可以根据自己需要添加

    UIImageView *imageView=[[UIImageView alloc] init];

    if(kIsIphone5){

        imageView.image=[UIImage imageNamed:@"scan_bg_568h"];

        imageView.frame=CGRectMake(0, 0, 320, 568);

        

    }else{

        imageView.image=[UIImage imageNamed:@"scan_bg"];

        imageView.frame=CGRectMake(0, 0, 320, 480);

 

    }

    

    [self.view addSubview:imageView];

    

    //这里添加了类似微信的扫描线,并开始上线滑动动画

    lineView=[[UIImageView alloc] initWithFrame:CGRectMake(51, 200, 219, 3)];

    lineView.image=[UIImage imageNamed:@"scan_line"];

    [self.view addSubview:lineView];

    

    [self loadAnimationStart];

    

 

}

 

 

-(void)loadAnimationStart{

    

    if(kIsIphone5){

    

        [UIView animateWithDuration:2.0 animations:^{

            lineView.frame=CGRectMake(lineView.frame.origin.x, 390,lineView.frame.size.width,lineView.frame.size.height);

        } completion:^(BOOL finished) {

            

            [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(secStart) userInfo:nil repeats:NO];

        }];

    }else{

        

        [UIView animateWithDuration:2.0 animations:^{

            lineView.frame=CGRectMake(lineView.frame.origin.x, 345,lineView.frame.size.width,lineView.frame.size.height);

        } completion:^(BOOL finished) {

            

            [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(secStart) userInfo:nil repeats:NO];

        }];

        

    }

    

}

 

-(void)secStart{

    

    if(kIsIphone5){

        

        lineView.frame=CGRectMake(lineView.frame.origin.x, 175,lineView.frame.size.width,lineView.frame.size.height);

        [self loadAnimationStart];

        

    }else{

        

        lineView.frame=CGRectMake(lineView.frame.origin.x, 130,lineView.frame.size.width,lineView.frame.size.height);

        [self loadAnimationStart];

        

        

    }

    

}

 

 

-(void)cancelScan{

    

    [_readerView stop];

    [self dismissViewControllerAnimated:YES completion:nil];

    

}

 

 

 

- (CGRect)getScanCrop:(CGRect)rect readerViewBounds:(CGRect)rvBounds{

    CGFloat x,y,width,height;

    x = rect.origin.y / rvBounds.size.height;

    y = 1 - (rect.origin.x + rect.size.width) / rvBounds.size.width;

    width = (rect.origin.y + rect.size.height) / rvBounds.size.height;

    height = 1 - rect.origin.x / rvBounds.size.width;

    returnCGRectMake(x, y, width, height);

 

}

 

-(void)viewDidAppear:(BOOL)animated{

    

    [super viewDidAppear:YES];

    [_readerView start];

}

 

 

- (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image

{

    NSString *str;

    

    for (ZBarSymbol *symbol in symbols) {

        DLog(@"%@", symbol.data);

        str=symbol.data;

        break;

    }

    

    

    [_readerView stop];

    

    if([_delegate respondsToSelector:@selector(finishRead:)]){

        

        [_delegate finishRead:str];

    }

    

    [self dismissViewControllerAnimated:YES completion:nil];

    

 

}

 

//代码见附件,直接导入工程就可以使用了

分享到:
评论
1 楼 luxiaoruo 2014-12-17  
[flash=200,200][url][img][list]
[*]
引用
[u][i][b]说的太好了[/b][/i][/u]
[/list][/img][/url][/flash]
          

相关推荐

    基于ZBar条形码、二维码扫描Demo

    【基于ZBar条形码、二维码扫描Demo】是一款实用的工具,它提供了对条形码和二维码进行识别和解析的功能。这个项目可以帮助开发者快速集成条码扫描功能到自己的应用程序中,适用于零售、物流、信息录入等多种场景。...

    ZBar条型码、二维码

    在IT行业中,ZBar被广泛应用于移动设备应用开发,如手机应用,通过摄像头扫描读取条形码或二维码中的信息。 **一、条形码与二维码的基本原理** 条形码是由不同宽度的黑白条纹组成,每种宽度代表一个数字或字母,...

    iOS使用ZBAR扫描二维码

    ZBAR库是一个流行的开源项目,专门用于二维码和条形码的读取,适用于多种平台,包括iOS。在本文中,我们将深入探讨如何在Xcode 4.6环境下,针对iOS 6.0和6.1版本,利用ZBAR库实现二维码和条形码的扫描及二维码的生成...

    zBar SDK iOS实现二维码功能

    首先,zBar是一个开源的条码识别库,支持多种条码类型,包括一维码和二维码,如QR Code、Code 128等。它为开发者提供了便捷的API,可以在iOS应用中轻松集成二维码读取功能。 **安装zBar SDK** 1. 下载zBar SDK,...

    ios-条形码、二维码.zip

    在iOS开发中,我们可以使用苹果官方提供的CoreImage框架来处理条形码和二维码的生成与识别。另外,还有一些第三方库如ZBar、AVFoundation等可以辅助实现这些功能。 三、生成条形码和二维码 1. CoreImage框架:利用...

    Zbar扫码以及相册二维码识别demo

    ZBar是一个开源的图像识别引擎,专为读取一维和二维条形码而设计。它能够解析多种类型的二维码,包括但不限于QR Code、Code 128、Code 39等。ZBar通过分析图像中的黑白像素模式来识别条码,然后解码其中包含的信息。...

    zBar 条形码二维码识别 下载

    zBar是一个开源的、跨平台的条形码和二维码识别库,它能够高效地解析多种类型的条码,包括但不限于EAN-13、UPC-A、Code 128、QR Code以及Data Matrix等。zBar的广泛应用在于移动设备和桌面应用中,例如在零售、物流...

    采用Zbar第三方库,实现二维码定位,并识别内容,解决了中文乱码

    Zbar是一个开源的图像处理库,专门用于读取多种一维和二维条码,包括常见的QR码、Code 39、Code 128等。在Android和iOS开发中,Zbar提供了易于集成的SDK,使得开发者能够快速地在自己的应用中实现二维码识别功能。 ...

    zxing和zbar的综合版本很高效的二维码扫描

    ZBar,相比之下,专注于二维码和一维条码的扫描,其解析速度相对较快,对低质量图像的识别率较高。ZBar的Android SDK提供了一个简单的接口,允许开发者快速地在应用中集成扫描功能。 对于“zxing和zbar的综合版本很...

    ios zbar条码扫描

    在iOS开发中,ZBar是一个常用的库,用于实现条形码和二维码的扫描功能。ZBar SDK提供了一套完整的解决方案,让开发者能够轻松地在自己的应用程序中集成条码读取功能。下面我们将深入探讨ZBar在iOS应用中的使用,以及...

    ZBar二维码扫码库

    1. **二维码技术**:二维码,全称为“Quick Response Code”,是一种二维条形码,能够存储更多的信息,如文字、URL链接、电话号码等,并且可以快速被设备读取。ZBar库就是针对这种技术进行解析的工具。 2. **C++...

    iOS ZBar64位SDK

    ZBar是由ZBar项目提供的一款SDK,它允许iOS应用轻松实现条形码和二维码的扫描与解析。在早期,ZBar主要支持32位架构,但在2015年后,由于苹果对App Store提交的应用提出了64位支持的要求,开发者需要更新他们的SDK以...

    iphone开发的zbar二维码库

    ZBar是由Simon Woodside开发的一个强大的条形码和二维码读取库,支持多种类型的条码,包括Code 39、Interleaved 2 of 5、UPC/EAN、Code 128、PDF417以及我们关注的QR Code。对于iPhone开发而言,ZBar提供了一套简单...

    zbar 条码扫描源码 效果还不错

    ZBar是一款开源的条码识别库,主要用于读取多种类型的条形码和二维码,包括EAN-13、UPC-A、Code 128、QR Code等。它提供了跨平台的支持,可以在iOS、Android以及各种Linux系统上运行。本文将深入探讨ZBar的核心功能...

    ios delphi 二维码识别

    ZBar是一个开源的图像识别库,专门用于读取一维和二维条形码,包括QR Code。在提供的文件列表中,"libzbar.a"就是ZBar库的静态链接库文件,适用于iOS平台。在Delphi项目中,我们需要将其导入并链接到工程中,以便在...

    zbar-安卓可用比zxing更快的二维码方案

    zbar是一个开源的图像识别库,最初是为了读取一维和二维条形码而设计的,其中包括二维码。相比于zxing,zbar在二维码识别速度上表现出色,能够实现几乎无延时的扫描体验,这对于实时应用或者对响应速度有高要求的...

    zbar二维码扫描例子

    ZBar是一个开源的、跨平台的二维码和条形码读取库,适用于多种编程语言,包括C++、Python等。本篇文章将深入探讨“ZBar二维码扫描例子”,基于提供的描述,我们将分析官方DEMO的修改,以及如何解决其中的重大bug,并...

Global site tag (gtag.js) - Google Analytics