• 二维码的生成与扫描


    /// <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);
    }
    }

  • 相关阅读:
    Flink:What is stream processing?
    Flink1.10.1集成Hadoop3.0.0源码编译实战
    2003-Can't connect to Mysql on '主机名'(10061)
    Mybatis:Tag name expected
    谷歌浏览器安装json格式化插件
    kafka最佳实践:Kafka Best Practices
    kafka生产者性能监控:Monitor Kafka Producer for Performance
    kafka2.3性能测试:Kafka 2.3 Performance testing
    Tomcat 8 Invalid character found in the request target. The valid characters are defined in RFC 3986
    Springboot集成Mybatis、JPA
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11277866.html
Copyright © 2020-2023  润新知