unityZXing二维码的生成与扫描

本文实例为大家分享了unityZXing二维码生成与扫描的具体代码,供大家参考,具体内容如下

借鉴自某位大佬不记得了

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing;
using UnityEngine.UI;
/// <summary>
/// 二维码扫描识别功能
/// </summary>
public class TestQRCodeScanning : MonoBehaviour {

  [Header("摄像机检测界面")]
  public RawImage cameraTexture;//摄像机映射显示区域

  private WebCamTexture webCamTexture;//摄像机映射纹理
  public Text text;//用来显示扫描信息
  //二维码识别类
  BarcodeReader barcodeReader;//库文件的对象(二维码信息保存的地方)

  /// <summary>
  /// 开启摄像机和准备工作
  /// </summary>
  void DeviceInit()
  {

    //1、获取所有摄像机硬件
    WebCamDevice[] devices = WebCamTexture.devices;
    //2、获取第一个摄像机硬件的名称
    string deviceName = devices[0].name;//手机后置摄像机
    //3、创建实例化一个摄像机显示区域
    webCamTexture = new WebCamTexture(deviceName, 400, 300);
    //4、显示的图片信息
    cameraTexture.texture = webCamTexture;
    //5、打开摄像机运行识别
    webCamTexture.Play();

    //6、实例化识别二维码信息存储对象
    barcodeReader = new BarcodeReader();
  }

  Color32[] data;//二维码图片信息以像素点颜色信息数组存放

  /// <summary>
  /// 识别摄像机图片中的二维码信息
  /// 打印二维码识别到的信息
  /// </summary>
  void ScanQRCode()
  {
    //7、获取摄像机画面的像素颜色数组信息
    data = webCamTexture.GetPixels32();
    //8、获取图片中的二维码信息
    Result result = barcodeReader.Decode(data,webCamTexture.width,webCamTexture.height);
    //如果获取到二维码信息了,打印出来
    if (result!=null)
    {
      Debug.Log(result.Text);//===》==》===》 这是从二维码识别出来的信息
      text.text = result.Text;//显示扫描信息

      //扫描成功之后的处理
      IsScanning = false;
      webCamTexture.Stop();
    }
  }

  /// <summary>
  /// Start 初始化函数
  /// </summary>
  private void Start()
  {
    scanningButton.onClick.AddListener(ScanningButtonClick);
  }

  bool IsScanning = false;
  float interval = 3;//扫描识别时间间隔
  [SerializeField] Button scanningButton;
  void ScanningButtonClick()
  {
    DeviceInit();
    IsScanning = true;
  }

  private void Update()
  {
    if (IsScanning)
    {
      //每隔一段时间进行一次识别二维码信息
      interval += Time.deltaTime;
      if (interval>=3)
      {
        interval = 0;
        ScanQRCode();//开始扫描
      }
    }
  }
}

ZXing:https://archive.codeplex.com/?p=zxingnet

下载之后把zxing.unity.dll拷贝到Unity的Plugins文件夹下,

zxing.unity.dll下载之后的位置找到UnityDemo/Assets下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using ZXing;
//二维码的生成
public class TestQRCodeDraw : MonoBehaviour {

  [Header("绘制好的二维码显示界面")]
  public RawImage QRCode;
  //二维码绘制类
  BarcodeWriter barcodeWriter;
  [SerializeField] Button drawbutton;
  /// <summary>
  /// 将制定字符串信息转换成二维码图片信息
  /// </summary>
  /// <param name="formatStr">要生产二维码的字符串信息</param>
  /// <param name="width">二维码的宽度</param>
  /// <param name="height">二维码的高度</param>
  /// <returns>返回二维码图片的颜色数组信息</returns>
  Color32[] GeneQRCode(string formatStr,int width,int height)
  {
    //绘制二维码前进行一些设置
    ZXing.QrCode.QrCodeEncodingOptions options =
      new ZXing.QrCode.QrCodeEncodingOptions();
    //设置字符串转换格式,确保字符串信息保持正确
    options.CharacterSet = "UTF-8";
    //设置绘制区域的宽度和高度的像素值
    options.Width = width;
    options.Height = height;
    //设置二维码边缘留白宽度(值越大留白宽度大,二维码就减小)
    options.Margin = 1;

    //实例化字符串绘制二维码工具
    barcodeWriter = new BarcodeWriter {Format=BarcodeFormat.QR_CODE,Options=options };
    //进行二维码绘制并进行返回图片的颜色数组信息
    return barcodeWriter.Write(formatStr); 

  }

  /// <summary>
  /// 根据二维码图片信息绘制指定字符串信息的二维码到指定区域
  /// </summary>
  /// <param name="str">要生产二维码的字符串信息</param>
  /// <param name="width">二维码的宽度</param>
  /// <param name="height">二维码的高度</param>
  /// <returns>返回绘制好的图片</returns>
   Texture2D ShowQRCode(string str,int width,int height)
  {
    //实例化一个图片类
    Texture2D t = new Texture2D(width, height);
    //获取二维码图片颜色数组信息
    Color32[] col32 = GeneQRCode(str, width, height);
    //为图片设置绘制像素颜色信息
    t.SetPixels32(col32);
    //设置信息更新应用下
    t.Apply();
    //将整理好的图片信息显示到指定区域中
    return t;
  }

  /// <summary>
  /// 开始绘制指定信息的二维码
  /// </summary>
  /// <param name="formatStr"></param>
  void DrawQRCode(string formatStr)
  {
    //注意:这个宽高度大小256不要变。不然生成的信息不正确
    //256有可能是这个ZXingNet插件指定大小的绘制像素点数值
    Texture2D t = ShowQRCode(formatStr, 256, 256);

    //显示到UI界面的图片上
    QRCode.texture = t;
  }

  public string QRCodeText = "二维码";
  void DrawButtonClick()
  {
    DrawQRCode(QRCodeText);
  }

  private void Start()
  {
    drawbutton.onClick.AddListener(DrawButtonClick);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# zxing二维码写入的实例代码

    复制代码 代码如下: private void button1_Click(object sender, EventArgs e)        {            if (string.IsNullOrEmpty(this.textBox1.Text.Trim()))            {                MessageBox.Show("请输入需要转换的信息!");                return;            } string con

  • 详解使用zxing库生成QR-Code二维码

    详解使用zxing库生成QR-Code二维码 最近因为一些工作需要,需要根据实际的信息生成QR-Code二维码图片文件,自然想到zxing库了,具体的代码很简单,做个备忘. 首先是引入zxing库,我是使用maven构建项目的,添加依赖: <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0<

  • C#利用ZXing.Net生成条形码和二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.而ZXing.Net是ZXing的端口之一. 在工程中引用ZXing.Net 在项目中,点击项目名称右键-->管理NuGet程序包,打开NuGet包管理器窗口,进行搜索下载即可,如下图所示: ZXing.Net关键类结构图 包括Reader[识

  • unityZXing二维码的生成与扫描

    本文实例为大家分享了unityZXing二维码生成与扫描的具体代码,供大家参考,具体内容如下 借鉴自某位大佬不记得了 using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXing; using UnityEngine.UI; /// <summary> /// 二维码扫描识别功能 /// </summary> public class TestQRCodeScan

  • IOS笔记061之二维码的生成和扫描

    如今二维码随处可见,无论是实物商品还是各种礼券都少不了二维码的身影.而手机等移动设备又成为二维码的一个很好的应用平台,不管是生成二维码还是扫码二维码.本篇文章从生成二维码.扫描二维码展开分析,通过内容分析二维码用起来也很easy了. 首先说下生成二维码 二维码可以存放纯文本.名片或者URL 其次生成二维码的步骤: 导入CoreImage框架 再次通过滤镜CIFilter生成二维码 1.创建过滤器 2.恢复滤镜的默认属性 3.设置内容 4.获取输出文件 5.显示二维码 代码实现 CoreImage

  • iOS二维码的生成和扫描

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 属性 @property (strong,nonatomic)AVCaptureDevice * device; @property (strong,nonatomic)AVCaptureDeviceInput * input; @property (strong,nonatomic)AVCaptureMetadataOutput * output; @property (strong,nonatomic)AV

  • 二维码的生成细节和原理

    二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等.这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下.供好学的人一同学习之. 关于QR Code Specification,可参看这个PDF:http://raidenii.net/files/datasheets/misc/qr_c

  • Android基于google Zxing实现二维码的生成

    最近项目用到了二维码的生成与识别,之前没有接触这块,然后就上网搜了搜,发现有好多这方面的资源,特别是google Zxing对二维码的封装,实现的已经不错了,可以直接拿过来引用,下载了他们的源码后,只做了少少的改动,就是在Demo中增加了长按识别的功能,网上虽然也有长按识别的Demo,但好多下载下来却无法运行,然后总结了一下,加在了下面的Demo中.   下面来介绍这个Demo的主类 public class BarCodeTestActivity extends Activity { priv

  • PHP二维码的生成与识别案例

    二维码的分类 线性堆叠式二维码 矩阵式二维码 二维码的优缺点 优点 信息容量大 编码范围广 容错能力强 译码可靠性高 可引入加密措施 成本低,易制作 缺点 二维码技术成为手机病毒.钓鱼网站传播的新渠道 信息泄密 目前流行的三大国际标准 PDF417:不支持中文 DM:专利未公开,需支付专利费用 QR CODE:专利公开,支持中文 QR CODE 纠错能力 L级:约可纠错7%的数据码字 M级:约可纠错15%的数据码字 Q级:约可纠错25%的数据码字 H级:约可纠错30%的数据码字 前提条件 GD库

  • 基于Java实现二维码的生成和解析

    目录 导入相关jar包 二维码工具类编 创建二维码图片 二维码设置logo 将文明说明增加到二维码上 解析二维码 main方法测试类 最近因个人需求需要对根据内容生成二维码和进行解析!记录一下!二维码其实就是一种编码技术,只是这种编码技术是用在图片上了,将给定的一些文字,数字转换为一张经过特定编码的图片.这里利用的是 google 公司的 zxing使用方便,可以操作条形码或者二维码等 导入相关jar包 <!-- 二维码 --> <dependency> <groupId&g

  • iOS二维码的生成代码

    本文实例为大家分享了iOS二维码的生成代码,供大家参考,具体内容如下 一.工程图. 二.代码. ViewController.m #import "ViewController.h" #import "ScanViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // D

  • 基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作

    在很多项目里面,对条形码和二维码的生成和打印也是一种很常见的操作,在Web项目里面,我们可以利用JS生成条形码和二维码的组件有很多.本文引入两个比较广泛使用的JS组件,用来处理条形码和二维码的生成处理,并介绍如何利用CLODOP组件实现内容的打印输出. 生成条形码使用组件JsBarcode,生成二维码使用组件qrcodejs. 1.条形码的生成 条码的作用一般在一些商品标签上,方便使用条码枪快速.准确录入信息. 如下所示是一种条形码 这里条形码生成使用了JsBarcode组件进行处理,它支持很多

  • Android编程实现二维码的生成与解析

    本文实例讲述了Android编程实现二维码的生成与解析.分享给大家供大家参考,具体如下: 直接上代码,代码上面有具体的解析,并且提供jar供下载:二维码Jar包.rar. 根据文本生成对应的二维码: // 生成QR图 private void createImage() { try { // 需要引入core包 QRCodeWriter writer = new QRCodeWriter(); String text = qr_text.getText().toString(); Log.i(T

随机推荐