ZBar QRcode implemention

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

2.新建一个项目。

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

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

5.在appDelegate文件中加入 标记部分的代码

[cpp] view plaincopy

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
  4. // Override point for customization after application launch.
  5. self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
  6. self.window.rootViewController = self.viewController;
  7. [self.window makeKeyAndVisible];
  8. // force view class to load so it may be referenced directly from NIB
  9. [ZBarReaderView class];
  10. return YES;
  11. }

注意此代码:

[cpp] view plaincopy

  1. // force view class to load so it may be referenced directly from NIB
  2. [ZBarReaderView class];

6.在.h文件中加入   ZBarReaderViewDelegate的实现,代码如下:

[cpp] view plaincopy

  1. //
  2. //  ViewController.h
  3. //  FootSafety
  4. //
  5. //  Created by 泽宇 徐 on 12-6-12.
  6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "ZBarSDK.h"
  10. @interface ViewController : UIViewController<ZBarReaderViewDelegate>
  11. {
  12. IBOutlet UILabel  * label ;
  13. ZBarReaderView *readerView;
  14. ZBarCameraSimulator *cameraSim;
  15. }
  16. @property(nonatomic,retain) UILabel * label ;
  17. @property (nonatomic, retain) IBOutlet ZBarReaderView *readerView;
  18. @end

7.在.m文件中要实现的主要方法是:

[html] view plaincopy

  1. - (void) readerView: (ZBarReaderView*) view
  2. didReadSymbols: (ZBarSymbolSet*) syms
  3. fromImage: (UIImage*) img
  4. {
  5. // do something useful with results
  6. for(ZBarSymbol *sym in syms) {
  7. self.label.text = sym.data;
  8. break;
  9. }
  10. }

这里是功能是读取照片信息,把条码放如label显示

[html] view plaincopy

  1. -(void) viewDidAppear:(BOOL)animated
  2. {
  3. // run the reader when the view is visible
  4. [readerView start];
  5. }

这个是在显示视图的时候,启动摄像头,开始扫描

[html] view plaincopy

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. // Do any additional setup after loading the view, typically from a nib.
  5. // the delegate receives decode results
  6. readerView.readerDelegate = self;
  7. // you can use this to support the simulator
  8. if(TARGET_IPHONE_SIMULATOR) {
  9. cameraSim = [[ZBarCameraSimulator alloc]
  10. initWithViewController: self];
  11. cameraSim.readerView = readerView;
  12. }
  13. }

在初始化的时候,设置托管。

.m文件所有内容是:

[html] view plaincopy

  1. //
  2. //  ViewController.m
  3. //  FootSafety
  4. //
  5. //  Created by 泽宇 徐 on 12-6-12.
  6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "ViewController.h"
  9. @interface ViewController ()
  10. @end
  11. @implementation ViewController
  12. @synthesize label;
  13. @synthesize readerView;
  14. - (void)viewDidLoad
  15. {
  16. [super viewDidLoad];
  17. // Do any additional setup after loading the view, typically from a nib.
  18. // the delegate receives decode results
  19. readerView.readerDelegate = self;
  20. // you can use this to support the simulator
  21. if(TARGET_IPHONE_SIMULATOR) {
  22. cameraSim = [[ZBarCameraSimulator alloc]
  23. initWithViewController: self];
  24. cameraSim.readerView = readerView;
  25. }
  26. }
  27. -(void) viewDidAppear:(BOOL)animated
  28. {
  29. // run the reader when the view is visible
  30. [readerView start];
  31. }
  32. - (void) readerView: (ZBarReaderView*) view
  33. didReadSymbols: (ZBarSymbolSet*) syms
  34. fromImage: (UIImage*) img
  35. {
  36. // do something useful with results
  37. for(ZBarSymbol *sym in syms) {
  38. self.label.text = sym.data;
  39. break;
  40. }
  41. }
  42. - (void)viewDidUnload
  43. {
  44. [super viewDidUnload];
  45. // Release any retained subviews of the main view.
  46. }
  47. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  48. {
  49. return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
  50. }
  51. -(void) dealloc
  52. {
  53. [self.readerView release];
  54. [self.label release];
  55. [super dealloc];
  56. }
  57. @end

在ViewController.xib文件中 增加一个view,并且修改view的类是ZBarReaderView ,并且指向 .h文件中定义的

 

//  ViewController.m

//  QRCode

//

//  Created by 殷婷婷 on 15-8-1.

//  Copyright (c) 2015年 manluotuo. All rights reserved.

//

#import "ViewController.h"

#import "ZBarSDK.h"

@interface ViewController ()<ZBarReaderViewDelegate>

@property(nonatomic,strong)ZBarReaderView *readerView;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

ZBarReaderView *readerView = [[ZBarReaderView alloc]init];

readerView.frame = CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height - 44);

readerView.readerDelegate = self;

//关闭闪光灯

readerView.torchMode = 0;

//扫描区域

CGRect scanMaskRect = CGRectMake(60, CGRectGetMidY(readerView.frame) - 126, 200, 200);

//处理模拟器

if (TARGET_IPHONE_SIMULATOR) {

ZBarCameraSimulator *cameraSimulator

= [[ZBarCameraSimulator alloc]initWithViewController:self];

cameraSimulator.readerView = readerView;

}

[self.view addSubview:readerView];

self.readerView = readerView;

//扫描区域计算

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

[readerView start];

}

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

{

CGFloat x,y,width,height;

x = rect.origin.x / readerViewBounds.size.width;

y = rect.origin.y / readerViewBounds.size.height;

width = rect.size.width / readerViewBounds.size.width;

height = rect.size.height / readerViewBounds.size.height;

return CGRectMake(x, y, width, height);

}

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

{

for (ZBarSymbol *symbol in symbols) {

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

break;

}

[self.readerView stop];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

时间: 2024-10-06 10:37:40

ZBar QRcode implemention的相关文章

android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)

写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载   zbarLib编译project  project下载0积分 bug 在2.3的系统中Holder须要设置type,否则会黑屏(感谢网友[(α ⒎待sんа)294439435]) com.example.qu.MainActivity的第50行mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 今天发现 在com.exampl

二维码识别之Android完整编译Zbar

版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 大概刚做Android开发的时候就做过二维码扫描,那时候懂的东西少,就搜出来了ZXing和Zbar两个库.ZXing是纯Java代码实现的,适用于Android平台:Zbar是C实现的,可以供很多语言和平台使用,比如Java.iOS平台.Android平台,Python等等.很明显Zbar的识别率和速度都是明显快于ZXing的,但是无奈那时候不会编译Zbar,只好下载了ZXing,但是由于当时技术能

PHP 生成、识别二维码

温馨提示:经过这 2 天的折腾,我卸载了 php7.1.原因只有一个——我要安装的条形码扩展模块 php-zbarcode 的 c 语言源代码不支持 php7.改源代码改了半天,还是没奏效.最后看 github 上一个温馨的 issue 换回了 php5.6.这下装起来顺利多了-话不多说,正题开始. 一.php 生成 qr code 二维码 phpqrcode 是由 php 编写的.可以生成 QR Code 二维码的第三方包.官网有很多例子可以参考,使用起来很简单,2 行代码. <?php //

iOS的二维码(QRCode)的学习

QRCode 二维码的学习: 需要倒入一个框架   AVFoundation 1.需要有输入设备, 2.输出设备 (解析输入设备的内容) 3.有一个会话类(输入输出完事了需要哪一个是输入那一个是输出) AVCaptureSession 4.一个展示扫描的内容 layer 二 : 然后创建 三:设置代理 --获取数据 会话类不知道哪一个是时输入设备 哪一个是 输出设备的 需要衔接她们 去绑定输入和输出设备 (做一个是否的判断). 四:设置扫描类型 五:开始扫描 [self.session star

iphone 开发中使用zbar时遇到的几个典型问题解决方法。

在近期的一个ios项目中使用到了一个二维码扫描库(Qrcode)--ZBar, 期间遇到2个问题. 1. zbar下载后使用其libzbar.a 发现无法再arm7上运行. 2. zbar使用过程中,如果多次打开摄像头扫描Qrcode,会出现memory leak problem, 导致其内存指数型增长,大概8次调用后即耗费了85M 左右的内存, 最后导致app崩溃. 3. libzbar.a 在重新编译后, 无法再在simulator中运行,编译链接时出现错误提示: Undefined sym

实现zbar扫描二维码的时候就把照片存储出来的办法

业务场景 当实现二维码扫描的时候(用的扫码库是zbar),有时候需要悄悄的整个扫描的照片存储下来,(charles有部分变态业务就是这样)就是说给扫描的图片照个全景照片. 那么代码如何实现的呢?我去StackoverFlow里终于找到了实现办法! protected PreviewCallback previewCb = new PreviewCallback() { public void onPreviewFrame(byte[] data, Camera camera) { try { C

ZXing vs ZBar: 开源条形码SDK性能PK

很多手机app条形码应用都使用了ZXing和ZBar两个开源条形码SDK.那么从检测速度和检测率看哪个更出色呢?ZXing用Java实现,ZBar用C/C++实现,为了确保公平,这里用JNI封装ZBar,用Java写测试. 参考原文:How to Benchmark Barcode SDK Performance – ZXingvsZBar 作者:Desmond Shaw 翻译:yushulx SDK下载 ZXing Source code https://github.com/zxing/zx

ZBar与ZXing使用后感觉

[原]ZBar与ZXing使用后感觉(上) 2014-3-18阅读2011 评论1 最近对二维码比较感兴趣,还是那句老话,那么我就对比了一下zxing和zbar 如果对于这两个的背景不了解的话,可以看我以前的文章,介绍了几个比较基础的知识. 首先,现在有个很好用的cocoapods第三方库管理工具,至于如何安装,那么以前分享过一片如何安装cocoapods的介绍. 如果这两点你都满足的话,可以继续这个对比拉,其实为什么不直接从github下载一步步配置编译呢?至少我觉得cocoapods这个工具

python zbar

zbar 可以解析 qrcode 不过安装过程可是艰辛 本地开发用mac,生产服务器用ubuntu.安装方式不同.整理出以下安装方式 Ubuntu 14.04.1 LTS (GNU/Linux 3.8.0-29-generic x86_64) $ apt-get install libzbar-dev $ pip install zbar Ubuntu 10.04.4 LTS apt-get install libzbar-dev apt-get install python-gtk2-dev