ios应用程序中的QR码扫描 [英] QR Code Scanning in ios application

查看:340
本文介绍了ios应用程序中的QR码扫描的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在应用程序中集成QR码阅读器并找到


了解它是如何运作的


  1. 此处


  2. 在项目中添加以下框架




    • AVFoundation.framework

    • CoreGraphics.framework

    • CoreMedia.framework

    • CoreAudio.framework

    • CoreVideo.framework

    • QuartzCore.framework

    • libiconv.dylib


  3. 在框架中添加zip下载的库 libzbar.a


  4. 在您的班级导入标题并确认其代理



    #importZBarSDK.h


  @interface ViewController:UIViewController< ZBarReaderDelegate> 

5.scan image

   - (IBAction)startScanning:(id)sender {

NSLog(@Scanning ..);
resultTextView.text = @扫描..;

ZBarReaderViewController * codeReader = [ZBarReaderViewController new];
codeReader.readerDelegate = self;
codeReader.supportedOrientationsMask = ZBarOrientationMaskAll;

ZBarImageScanner * scanner = codeReader.scanner;
[scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];

[self presentViewController:codeReader animated:YES completion:nil];

}

6.确认结果

   - (void)imagePickerController:(UIImagePickerController *)reader didFinishPickingMediaWithInfo:(NSDictionary *)info 
{
//得到解码结果
id< NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];

ZBarSymbol * symbol = nil;
for(结果中的符号)
//只需获取第一个条形码
break;

//在textview上显示结果
resultTextView.text = symbol.data;

resultImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];

//关闭控制器
[reader dismissViewControllerAnimated:YES completion:nil];
}

希望这会对您有所帮助,如果您发现任何问题也请告诉我这个例子,很乐意帮助



官方文档


I need to integrate QR-code reader in app and found a tutorial for it.

I downloaded Z-bar sdk from this link.

Here is what I had done.

In the QRscannerViewController.m

-(IBAction)StartScan:(id) sender
{
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
     reader.readerDelegate = self;

     reader.readerView.torchMode = 0;

    ZBarImageScanner *scanner = reader.scanner;
    // TODO: (optional) additional reader configuration here

    // EXAMPLE: disable rarely used I2/5 to improve performance
    [scanner setSymbology: ZBAR_I25
     config: ZBAR_CFG_ENABLE
      to: 0];

     // present and release the controller
     [self presentModalViewController: reader
       animated: YES];
     [reader release];

    resultTextView.hidden=NO;
 }

 - (void) readerControllerDidFailToRead: (ZBarReaderController*) reader
                         withRetry: (BOOL) retry{
     NSLog(@"the image picker failing to read");

 }

 - (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
 {


     NSLog(@"the image picker is calling successfully %@",info);
      // ADD: get the decode results
     id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
     ZBarSymbol *symbol = nil;
     NSString *hiddenData;
      for(symbol in results)
       hiddenData=[NSString stringWithString:symbol.data];
      NSLog(@"the symbols  is the following %@",symbol.data);
      // EXAMPLE: just grab the first barcode
     //  break;

      // EXAMPLE: do something useful with the barcode data
      //resultText.text = symbol.data;
      resultTextView.text=symbol.data;


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

      NSUserDefaults *storeData=[NSUserDefaults standardUserDefaults];
      [storeData setObject:hiddenData forKey:@"CONSUMERID"];
      NSLog(@"SYMBOL : %@",hiddenData);
      resultTextView.text=hiddenData;
     [reader dismissModalViewControllerAnimated: NO];

 }

All needed frameworks were added, so there is no referenced from errors.

When I click the scan button, the ZBarReaderViewController appears well and I hold the alt key and left click the mouse to open the photo library of simulator and all works fine.

What the problem is,

  1. The QR image is not get scanned, ie imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo function is not get called.
  2. The QR image appears larger than its original size.

How to solve this?

Why the image not get scanned?

解决方案

use ZBar SDK for BR and QR code scanning in our iPhone application.

you can find step by step article for this, how to do with sample code as well

How to use Barcode Scanner (BR and QR) in iPhone Tutorial (using ZBar)

see how it works

  1. download ZBar SDK from here

  2. add below frameworks in your project

    • AVFoundation.framework
    • CoreGraphics.framework
    • CoreMedia.framework
    • CoreAudio.framework
    • CoreVideo.framework
    • QuartzCore.framework
    • libiconv.dylib
  3. Add the library downloaded libzbar.a of zip in the frameworks

  4. import header in your class and confirm it's delegate

    #import "ZBarSDK.h"

and

@interface ViewController : UIViewController <ZBarReaderDelegate>

5.scan image

- (IBAction)startScanning:(id)sender {

    NSLog(@"Scanning..");    
    resultTextView.text = @"Scanning..";

    ZBarReaderViewController *codeReader = [ZBarReaderViewController new];
    codeReader.readerDelegate=self;
    codeReader.supportedOrientationsMask = ZBarOrientationMaskAll;

    ZBarImageScanner *scanner = codeReader.scanner;
    [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

    [self presentViewController:codeReader animated:YES completion:nil];    

}

6.get the result in

- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
{
    //  get the decode results
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];

    ZBarSymbol *symbol = nil;
    for(symbol in results)
        // just grab the first barcode
        break;

    // showing the result on textview
    resultTextView.text = symbol.data;    

    resultImageView.image = [info objectForKey: UIImagePickerControllerOriginalImage];

    // dismiss the controller 
    [reader dismissViewControllerAnimated:YES completion:nil];
}

Hope this will help you, also let me know if you find any trouble in this example, Happy to help

Official Docs

这篇关于ios应用程序中的QR码扫描的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆