Csharp/C#教程:unityZXing二维码的生成与扫描分享

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

借鉴自某位大佬不记得了

usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingZXing; usingUnityEngine.UI; ///<summary> ///二维码扫描识别功能 ///</summary> publicclassTestQRCodeScanning:MonoBehaviour{ [Header("摄像机检测界面")] publicRawImagecameraTexture;//摄像机映射显示区域 privateWebCamTexturewebCamTexture;//摄像机映射纹理 publicTexttext;//用来显示扫描信息 //二维码识别类 BarcodeReaderbarcodeReader;//库文件的对象(二维码信息保存的地方) ///<summary> ///开启摄像机和准备工作 ///</summary> voidDeviceInit() { //1、获取所有摄像机硬件 WebCamDevice[]devices=WebCamTexture.devices; //2、获取第一个摄像机硬件的名称 stringdeviceName=devices[0].name;//手机后置摄像机 //3、创建实例化一个摄像机显示区域 webCamTexture=newWebCamTexture(deviceName,400,300); //4、显示的图片信息 cameraTexture.texture=webCamTexture; //5、打开摄像机运行识别 webCamTexture.Play(); //6、实例化识别二维码信息存储对象 barcodeReader=newBarcodeReader(); } Color32[]data;//二维码图片信息以像素点颜色信息数组存放 ///<summary> ///识别摄像机图片中的二维码信息 ///打印二维码识别到的信息 ///</summary> voidScanQRCode() { //7、获取摄像机画面的像素颜色数组信息 data=webCamTexture.GetPixels32(); //8、获取图片中的二维码信息 Resultresult=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> privatevoidStart() { scanningButton.onClick.AddListener(ScanningButtonClick); } boolIsScanning=false; floatinterval=3;//扫描识别时间间隔 [SerializeField]ButtonscanningButton; voidScanningButtonClick() { DeviceInit(); IsScanning=true; } privatevoidUpdate() { if(IsScanning) { //每隔一段时间进行一次识别二维码信息 interval+=Time.deltaTime; if(interval>=3) { interval=0; ScanQRCode();//开始扫描 } } } }

ZXing:ZingNet

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

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

usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingUnityEngine.UI; usingZXing; //二维码的生成 publicclassTestQRCodeDraw:MonoBehaviour{ [Header("绘制好的二维码显示界面")] publicRawImageQRCode; //二维码绘制类 BarcodeWriterbarcodeWriter; [SerializeField]Buttondrawbutton; ///<summary> ///将制定字符串信息转换成二维码图片信息 ///</summary> ///<paramname="formatStr">要生产二维码的字符串信息</param> ///<paramname="width">二维码的宽度</param> ///<paramname="height">二维码的高度</param> ///<returns>返回二维码图片的颜色数组信息</returns> Color32[]GeneQRCode(stringformatStr,intwidth,intheight) { //绘制二维码前进行一些设置 ZXing.QrCode.QrCodeEncodingOptionsoptions= newZXing.QrCode.QrCodeEncodingOptions(); //设置字符串转换格式,确保字符串信息保持正确 options.CharacterSet="UTF-8"; //设置绘制区域的宽度和高度的像素值 options.Width=width; options.Height=height; //设置二维码边缘留白宽度(值越大留白宽度大,二维码就减小) options.Margin=1; //实例化字符串绘制二维码工具 barcodeWriter=newBarcodeWriter{Format=BarcodeFormat.QR_CODE,Options=options}; //进行二维码绘制并进行返回图片的颜色数组信息 returnbarcodeWriter.Write(formatStr); } ///<summary> ///根据二维码图片信息绘制指定字符串信息的二维码到指定区域 ///</summary> ///<paramname="str">要生产二维码的字符串信息</param> ///<paramname="width">二维码的宽度</param> ///<paramname="height">二维码的高度</param> ///<returns>返回绘制好的图片</returns> Texture2DShowQRCode(stringstr,intwidth,intheight) { //实例化一个图片类 Texture2Dt=newTexture2D(width,height); //获取二维码图片颜色数组信息 Color32[]col32=GeneQRCode(str,width,height); //为图片设置绘制像素颜色信息 t.SetPixels32(col32); //设置信息更新应用下 t.Apply(); //将整理好的图片信息显示到指定区域中 returnt; } ///<summary> ///开始绘制指定信息的二维码 ///</summary> ///<paramname="formatStr"></param> voidDrawQRCode(stringformatStr) { //注意:这个宽高度大小256不要变。不然生成的信息不正确 //256有可能是这个ZXingNet插件指定大小的绘制像素点数值 Texture2Dt=ShowQRCode(formatStr,256,256); //显示到UI界面的图片上 QRCode.texture=t; } publicstringQRCodeText="二维码"; voidDrawButtonClick() { DrawQRCode(QRCodeText); } privatevoidStart() { drawbutton.onClick.AddListener(DrawButtonClick); } } 您可能感兴趣的文章:Unity调用手机摄像机识别二维码Unity实现多平台二维码扫描

标签: unity 二维码 二维 ng ni

Unity调用手机摄像机识别二维码

Unity3D使用鼠标旋转缩放平移视角

上述就是C#学习教程:unityZXing二维码的生成与扫描分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/908430.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐