iOS中使用ZBar扫描二维码自定义扫描界面功能

之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Android的SDK可供使用,最终我选择了ZBar进行二维码识别,它的注释清晰,便于使用。

ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制。

ZBar使用起来也非常简单,将ZBarSDK导入项目,在需要使用ZBar的文件中导入ZBarSDK.h头文件即可

#pragma mark 初始化扫描
- (void)InitScan
{
  readview = [ZBarReaderView new];
  readview.backgroundColor = [UIColor clearColor];
  readview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
  readview.readerDelegate = self;
  readview.allowsPinchZoom = YES;//使用手势变焦
  readview.trackingColor = [UIColor redColor];
  readview.showsFPS = NO;// 显示帧率 YES 显示 NO 不显示
  //readview.scanCrop = CGRectMake(0, 0, 1, 1);//将被扫描的图像的区域
  UIImage *hbImage=[UIImage imageNamed:@"pick_bg.png"];
  scanZomeBack=[[UIImageView alloc] initWithImage:hbImage];
  //添加一个背景图片
  CGRect mImagerect=CGRectMake((readview.frame.size.width-200)/2.0, (readview.frame.size.height-200)/2.0, 200, 200);
  [scanZomeBack setFrame:mImagerect];
  readview.scanCrop = [self getScanCrop:mImagerect readerViewBounds:readview.bounds];//将被扫描的图像的区域
  [readview addSubview:scanZomeBack];
  [readview addSubview:readLineView];
  [self.view addSubview:readview];
  [readview start];
}
#pragma mark 获取扫描区域
-(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);
}
#pragma mark 扫描动画
-(void)loopDrawLine
{
  CGRect rect = CGRectMake(scanZomeBack.frame.origin.x, scanZomeBack.frame.origin.y, scanZomeBack.frame.size.width, 2);
  if (readLineView) {
    [readLineView removeFromSuperview];
  }
  readLineView = [[UIImageView alloc] initWithFrame:rect];
  [readLineView setImage:[UIImage imageNamed:@"line.png"]];
  [UIView animateWithDuration:3.0
             delay: 0.0
            options: UIViewAnimationOptionCurveEaseIn
           animations:^{
             //修改fream的代码写在这里
             readLineView.frame =CGRectMake(scanZomeBack.frame.origin.x, scanZomeBack.frame.origin.y+scanZomeBack.frame.size.height, scanZomeBack.frame.size.width, 2);
             [readLineView setAnimationRepeatCount:0];
           }
           completion:^(BOOL finished){
             if (!is_Anmotion) {
               [self loopDrawLine];
             }
           }];
  [readview addSubview:readLineView];
}
#pragma mark 获取扫描结果
- (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image
{
  // 得到扫描的条码内容
  const zbar_symbol_t *symbol = zbar_symbol_set_first_symbol(symbols.zbarSymbolSet);
  NSString *symbolStr = [NSString stringWithUTF8String: zbar_symbol_get_data(symbol)];
  if (zbar_symbol_get_type(symbol) == ZBAR_QRCODE) {
    // 是否QR二维码
  }
  for (ZBarSymbol *symbol in symbols) {
    [sTxtField setText:symbol.data];
    break;
  }
  [readerView stop];
  [readerView removeFromSuperview];
}

github地址:https://github.com/ZBar/ZBar

以上所述是小编给大家介绍的iOS中使用ZBar扫描二维码自定义扫描界面,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • zbar解码二维码和条形码示例

    复制代码 代码如下: #!/usr/bin/env python# coding: u8import osimport zbarimport Imageimport urllibimport uuiddef qrRead(url): uuid1 = uuid.uuid1()filename=str(uuid1)+".jpg"print uuid1 urllib.urlretrieve(url, filename) # create a readerscanner = zbar.Imag

  • PHP识别二维码的方法(php-zbarcode安装与使用)

    本文实例讲述了PHP识别二维码的方法.分享给大家供大家参考,具体如下: 说明:扩展需要依赖ImageMagick和zbar,安装前先安装这两个软件 1.安装ImageMagick(http://www.imagemagick.org/) yum install ImageMagick.x86_64 ImageMagick-devel.x86_64 2.安装zbar(http://sourceforge.net/projects/zbar/?source=directory) wget http:

  • iOS中使用ZBar扫描二维码自定义扫描界面功能

    之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Android的SDK可供使用,最终我选择了ZBar进行二维码识别,它的注释清晰,便于使用. ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我

  • iOS 原生实现扫描二维码和条形码功能限制扫描区域

    现在苹果iOS系统已经原生支持了二维码扫描的功能,使用原生来扫描需要导入AVFoundation. 扫描准备 一.获取摄像设备: device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) 二.创建输入流 do { try input = AVCaptureDeviceInput(device: device) } catch let e as NSError { print(e.localizedDescrip

  • Android中google Zxing实现二维码与条形码扫描

    Android中google Zxing实现二维码与条形码扫描 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现很多朋友都有介绍二维码扫描的功能,然后我就跟着人家的介绍自己搞起了二维码扫描功能,跟着人家的帖子,很快我的项目就加入了扫描二维码的功能,然后自己还很开心. 随着微信的到来,二维码越来越火

  • js中调用微信的扫描二维码功能的实现代码

    关键代码 <html> <head> <title> js调用微信扫一扫功能测试 </title> <!--引用微信JS库--> <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <!--引用jQuery库--> <script t

  • 扫描二维码控件的封装iOS实现

    扫描二维码效果 源码:https://github.com/YouXianMing/Animations // // QRCodeView.h // QRCode // // Created by YouXianMing on 16/7/7. // Copyright © 2016年 XianMing You. All rights reserved. // #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h>

  • android实现扫描网页二维码进行网页登录功能

    先说一下实现了什么效果,app扫描php写的页面(也可以java网页,都一样的思路和步骤),扫描成功后跳转进入主页,光和你们这么说,肯定有人说了,没图说个jb,这就出来一个问题,很多人写博客,看这标题特别符合自己的问题,然后兴致勃勃的进来了,一看,我去...尼玛全是代码,也不知道是不是我的那种问题和想要的那种效果,心里没谱啊,好了,上图: 别纠结这页面咋这么丑,没写样式,说一下我实现的思路哈,首先在数据库中新建一个表用来存储扫码登录信息(id,username,randomnum),这三个分别是

  • iOS和Android用同一个二维码实现跳转下载链接的方法

    前言 最近一个项目需要iOS和安卓使用一个二维码,让扫描的机器自己识别操作系统实现跳转到相应的下载链接.比如iPhone用微信进行扫描就让他跳转appStore的下载页面,安卓机器使用微信扫描就直接跳浏览器下载.但是这二维码还有一个需求就是,用户已经下载了这个app,当用户打开app进入到注册页面时,再次扫描这个二维码时,自动填写邀请码进行注册.那么该如何实现,细节就不说了,直接上代码. 使用js实现,其实代码非常简单. 使用时直接拷贝代码,改掉相应的链接就好. PS:该链接在微信环境打开时还是

  • Android利用ZXing扫描二维码的实例代码解析

    相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的 看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle

  • Android-Zxing实现二维码的扫描与生成

    Zxing: Zxing是一个开放源码,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.可以实现使用手机内置摄像头完成条形码的扫描以及解码. github: https://github.com/zxing/zxing 首先在写项目的时候,我们需要导入一个moduel,主要是从Zxing中提取的主要功能代码.其地址是: http://pan.baidu.com/s/1sk9pGmT 扫描二维码: 在点击扫描二维码的页面: startActivityForResu

  • Android中使用ZXing生成二维码(支持添加Logo图案)

    ZXing是谷歌的一个开源库,可以用来生成二维码.扫描二维码.本文所介绍的是第一部分. 首先上效果图: ZXing相关各种文件官方下载地址:https://github.com/zxing/zxing/releases 或者在这里下载(只有本项目所用的jar包,版本号:3.2.0):链接:http://pan.baidu.com/s/1pLqAR5x 1.生成二维码的工具类 /** * 二维码生成工具类 */ public class QRCodeUtil { /** * 生成二维码Bitmap

随机推荐