• unity之二维码


    首先下载插件ZXing,链接在下面。解压后把unity文件夹的文件导入unity中。

    注意:二维码生成目前只能生成256*256的,不然会报所引超出界限错误。

    链接:https://pan.baidu.com/s/1_En2Tc2kdiDw8fvvzJZKYQ
    提取码:vl5k

    代码如下:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using ZXing;
    using ZXing.QrCode;
    
    public class QRCodeFactory
    {
        #region 单例
        private static QRCodeFactory instance;
    
        public static QRCodeFactory Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new QRCodeFactory();
                }
                return instance;
            }
        }
    
        #endregion
    
        /// <summary>
        /// 直接返回图片
        /// </summary>
        /// <param name="content"></param>
        /// <param name="margin"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public Texture2D GetTexture2D(string content, int margin = 0, int width = 256, int height = 256)
        {
            if (string.IsNullOrEmpty(content))
            {
                Debug.Log("错误!数据不能为空!");
                return null;
            }
            Texture2D t2d = new Texture2D(width, height);
            t2d.SetPixels32(GetQRcode(content, margin, width, height));
            t2d.Apply();
            return t2d;
        }
        /// <summary>
        /// 只返回生成二维码的颜色数据
        /// </summary>
        /// <param name="content"></param>
        /// <param name="margin"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public Color32[] GetQRcode(string content, int margin = 0, int width = 256, int height = 256)
        {
            if (string.IsNullOrEmpty(content))
            {
                Debug.Log("错误!数据不能为空!");
                return null;
            }
    
            BarcodeWriter bw = new BarcodeWriter  //设置二维码变量类
            {
                Format = BarcodeFormat.QR_CODE,  //设置二维码格式
                Options = new QrCodeEncodingOptions //设置编码格式
                {
                    CharacterSet = "UTF-8",// 设置中文模式
                    Height = height, //设置宽高
                    Width = width,
                    Margin = margin  //设置二维码的边距
                }
            };
            return bw.Write(content);
        }
        public Result CheckQRCode(Texture2D t2d)
        {
            if (t2d == null)
            {
                Debug.Log("错误!图片为空!");
                return null;
            }
            Color32[] colorDatas = t2d.GetPixels32();
            BarcodeReader barcodeRender = new BarcodeReader();
            return barcodeRender.Decode(colorDatas, t2d.width, t2d.height);//将画面中的二维码信息检索出来
        }
    }

    using System.Collections;using System.Collections.Generic;using UnityEngine;using ZXing;using ZXing.QrCode;
    public class QRCodeFactory{    #region 单例    private static QRCodeFactory instance;
        public static QRCodeFactory Instance    {        get        {            if (instance == null)            {                instance = new QRCodeFactory();            }            return instance;        }    }
        #endregion
        /// <summary>    /// 直接返回图片    /// </summary>    /// <param name="content"></param>    /// <param name="margin"></param>    /// <param name="width"></param>    /// <param name="height"></param>    /// <returns></returns>    public Texture2D GetTexture2D(string content, int margin = 0, int width = 256, int height = 256)    {        if (content == "")        {            Debug.Log("错误!数据不能为空字符串!");            return null;        }        Texture2D t2d = new Texture2D(width, height);        t2d.SetPixels32(GetQRcode(content, margin, width, height));        t2d.Apply();        return t2d;    }    /// <summary>    /// 只返回生成二维码的颜色数据    /// </summary>    /// <param name="content"></param>    /// <param name="margin"></param>    /// <param name="width"></param>    /// <param name="height"></param>    /// <returns></returns>    public Color32[] GetQRcode(string content, int margin = 0, int width = 256, int height = 256)    {        if (content == "")        {            Debug.Log("错误!数据不能为空字符串!");            return null;        }
            BarcodeWriter bw = new BarcodeWriter  //设置二维码变量类        {            Format = BarcodeFormat.QR_CODE,  //设置二维码格式            Options = new QrCodeEncodingOptions //设置编码格式            {                CharacterSet = "UTF-8",// 设置中文模式                Height = height, //设置宽高                Width = width,                Margin = margin  //设置二维码的边距            }        };
            return bw.Write(content);    }    public Result CheckQRCode(Texture2D t2d)    {        if (t2d == null)        {            Debug.Log("错误!图片为空!");            return null;        }        Color32[] colorDatas = t2d.GetPixels32();        BarcodeReader barcodeRender = new BarcodeReader();        return barcodeRender.Decode(colorDatas, t2d.width, t2d.height);//将画面中的二维码信息检索出来    }}

  • 相关阅读:
    Spring AOP @Before @Around @After 等 advice 的执行顺序
    web服务启动spring自动执行ApplicationListener的用法
    Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法
    ApplicationContextAware使用理解
    查询oracle比较慢的session和sql
    使用ANTS Performance Profiler&ANTS Memory Profiler工具分析IIS进程内存和CPU占用过高问题
    C#控制台程序中处理2个关闭事件的代码实例
    mysql优化----第一篇:综述
    HMM 隐马尔科夫模型
    EM 期望最大化算法
  • 原文地址:https://www.cnblogs.com/luoyanghao/p/13497885.html
Copyright © 2020-2023  润新知