unityZXing二维码的生成与扫描

游戏 游戏 1246 人阅读 | 0 人回复

<
鉴戒自某位年夜佬没有记得了
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using ZXing;
  5. using UnityEngine.UI;
  6. /// <summary>
  7. /// 两维码扫描辨认功用
  8. /// </summary>
  9. public class TestQRCodeScanning : MonoBehaviour {
  10.     [Header("摄像机检测界里")]
  11.     public RawImage cameraTexture;//摄像机映照显现地区
  12.    
  13.     private WebCamTexture webCamTexture;//摄像机映照纹理
  14.     public Text text;//用去显现扫描疑息
  15.     //两维码辨认类
  16.     BarcodeReader barcodeReader;//库文件的工具(两维码疑息保留的处所)
  17.     /// <summary>
  18.     /// 开启摄像机战筹办事情
  19.     /// </summary>
  20.     void DeviceInit()
  21.     {
  22.      
  23.         //1、获得一切摄像机硬件
  24.         WebCamDevice[] devices = WebCamTexture.devices;
  25.         //2、获得第一个摄像机硬件的称号
  26.         string deviceName = devices[0].name;//脚机后置摄像机
  27.         //3、创立真例化一个摄像机显现地区
  28.         webCamTexture = new WebCamTexture(deviceName, 400, 300);
  29.         //4、显现的图片疑息
  30.         cameraTexture.texture = webCamTexture;
  31.         //5、翻开摄像机运转辨认
  32.         webCamTexture.Play();
  33.         //6、真例化辨认两维码疑息存储工具
  34.         barcodeReader = new BarcodeReader();
  35.     }
  36.     Color32[] data;//两维码图片疑息以像素面色彩疑息数组寄存
  37.     /// <summary>
  38.     /// 辨认摄像机图片中的两维码疑息
  39.     /// 挨印两维码辨认到的疑息
  40.     /// </summary>
  41.     void ScanQRCode()
  42.     {
  43.         //7、获得摄像机绘里的像素色彩数组疑息
  44.         data = webCamTexture.GetPixels32();
  45.         //8、获得图片中的两维码疑息
  46.         Result result = barcodeReader.Decode(data,webCamTexture.width,webCamTexture.height);
  47.         //假如获得到两维码疑息了,挨印出去
  48.         if (result!=null)
  49.         {
  50.             Debug.Log(result.Text);//===》==》===》 那是从两维码辨认出去的疑息
  51.             text.text = result.Text;//显现扫描疑息
  52.             //扫描胜利以后的处置
  53.             IsScanning = false;
  54.             webCamTexture.Stop();
  55.         }
  56.     }
  57.     /// <summary>
  58.     /// Start 初初化函数
  59.     /// </summary>
  60.     private void Start()
  61.     {
  62.         scanningButton.onClick.AddListener(ScanningButtonClick);
  63.     }
  64.     bool IsScanning = false;
  65.     float interval = 3;//扫描辨认工夫距离
  66.     [SerializeField] Button scanningButton;
  67.     void ScanningButtonClick()
  68.     {
  69.         DeviceInit();
  70.         IsScanning = true;
  71.     }
  72.     private void Update()
  73.     {
  74.         if (IsScanning)
  75.         {
  76.             //每隔一段工夫停止一次辨认两维码疑息
  77.             interval += Time.deltaTime;
  78.             if (interval>=3)
  79.             {
  80.                 interval = 0;
  81.                 ScanQRCode();//开端扫描
  82.             }
  83.         }
  84.     }
  85. }
复造代码
ZXing:https://archive.codeplex.com/?p=zxingnet
下载以后把zxing.unity.dll拷贝到Unity的Plugins文件夹下,
zxing.unity.dll下载以后的地位找到UnityDemo/Assets下
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using ZXing;
  6. //两维码的天生
  7. public class TestQRCodeDraw : MonoBehaviour {
  8.     [Header("画造好的两维码显现界里")]
  9.     public RawImage QRCode;
  10.     //两维码画造类
  11.     BarcodeWriter barcodeWriter;
  12.     [SerializeField] Button drawbutton;
  13.     /// <summary>
  14.     /// 将订定字符串疑息转换成两维码图片疑息
  15.     /// </summary>
  16.     /// <param name="formatStr">要消费两维码的字符串疑息</param>
  17.     /// <param name="width">两维码的宽度</param>
  18.     /// <param name="height">两维码的下度</param>
  19.     /// <returns>返回两维码图片的色彩数组疑息</returns>
  20.     Color32[] GeneQRCode(string formatStr,int width,int height)
  21.     {
  22.         //画造两维码行进止一些设置
  23.         ZXing.QrCode.QrCodeEncodingOptions options =
  24.             new ZXing.QrCode.QrCodeEncodingOptions();
  25.         //设置字符串转换格局,确保字符串疑息连结准确
  26.         options.CharacterSet = "UTF-8";
  27.         //设置画造地区的宽度战下度的像素值
  28.         options.Width = width;
  29.         options.Height = height;
  30.         //设置两维码边沿留利剑宽度(值越年夜留利剑宽度年夜,两维码便加小)
  31.         options.Margin = 1;
  32.         //真例化字符串画造两维码东西
  33.         barcodeWriter = new BarcodeWriter {Format=BarcodeFormat.QR_CODE,Options=options };
  34.         //停止两维码画造并停止返回图片的色彩数组疑息
  35.         return barcodeWriter.Write(formatStr);
  36.     }
  37.    
  38.     /// <summary>
  39.     /// 按照两维码图片疑息画造指定字符串疑息的两维码到指定地区
  40.     /// </summary>
  41.     /// <param name="str">要消费两维码的字符串疑息</param>
  42.     /// <param name="width">两维码的宽度</param>
  43.     /// <param name="height">两维码的下度</param>
  44.     /// <returns>返回画造好的图片</returns>
  45.      Texture2D ShowQRCode(string str,int width,int height)
  46.     {
  47.         //真例化一个图片类
  48.         Texture2D t = new Texture2D(width, height);
  49.         //获得两维码图片色彩数组疑息
  50.         Color32[] col32 = GeneQRCode(str, width, height);
  51.         //为图片设置画造像素色彩疑息
  52.         t.SetPixels32(col32);
  53.         //设置疑息更新使用下
  54.         t.Apply();
  55.         //将收拾整顿好的图片疑息显现到指定地区中
  56.         return t;
  57.     }
  58.    /// <summary>
  59.    /// 开端画造指定疑息的两维码
  60.    /// </summary>
  61.    /// <param name="formatStr"></param>
  62.     void DrawQRCode(string formatStr)
  63.     {
  64.         //留意:那个宽下度巨细256没有要变。否则天生的疑息没有准确
  65.         //256有多是那个ZXingNet插件指定巨细的画造像素面数值
  66.         Texture2D t = ShowQRCode(formatStr, 256, 256);
  67.         //显现到UI界里的图片上
  68.         QRCode.texture = t;
  69.     }
  70.     public string QRCodeText = "两维码";
  71.     void DrawButtonClick()
  72.     {
  73.         DrawQRCode(QRCodeText);
  74.     }
  75.     private void Start()
  76.     {
  77.         drawbutton.onClick.AddListener(DrawButtonClick);
  78.     }
  79. }
复造代码
 

免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则