本文實例為大家分享了unityZXing二維碼生成與掃描的具體代碼,供大家參考,具體內(nèi)容如下
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供江漢網(wǎng)站建設、江漢做網(wǎng)站、江漢網(wǎng)站設計、江漢網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、江漢企業(yè)網(wǎng)站模板建站服務,10年江漢做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
借鑒自某位大佬不記得了
using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXing; using UnityEngine.UI; ////// 二維碼掃描識別功能 /// public class TestQRCodeScanning : MonoBehaviour { [Header("攝像機檢測界面")] public RawImage cameraTexture;//攝像機映射顯示區(qū)域 private WebCamTexture webCamTexture;//攝像機映射紋理 public Text text;//用來顯示掃描信息 //二維碼識別類 BarcodeReader barcodeReader;//庫文件的對象(二維碼信息保存的地方) ////// 開啟攝像機和準備工作 /// void DeviceInit() { //1、獲取所有攝像機硬件 WebCamDevice[] devices = WebCamTexture.devices; //2、獲取第一個攝像機硬件的名稱 string deviceName = devices[0].name;//手機后置攝像機 //3、創(chuàng)建實例化一個攝像機顯示區(qū)域 webCamTexture = new WebCamTexture(deviceName, 400, 300); //4、顯示的圖片信息 cameraTexture.texture = webCamTexture; //5、打開攝像機運行識別 webCamTexture.Play(); //6、實例化識別二維碼信息存儲對象 barcodeReader = new BarcodeReader(); } Color32[] data;//二維碼圖片信息以像素點顏色信息數(shù)組存放 ////// 識別攝像機圖片中的二維碼信息 /// 打印二維碼識別到的信息 /// void ScanQRCode() { //7、獲取攝像機畫面的像素顏色數(shù)組信息 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(); } } ////// Start 初始化函數(shù) /// 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:ZingNet
下載之后把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; ////// 將制定字符串信息轉(zhuǎn)換成二維碼圖片信息 /// /// 要生產(chǎn)二維碼的字符串信息 /// 二維碼的寬度 /// 二維碼的高度 ///返回二維碼圖片的顏色數(shù)組信息 Color32[] GeneQRCode(string formatStr,int width,int height) { //繪制二維碼前進行一些設置 ZXing.QrCode.QrCodeEncodingOptions options = new ZXing.QrCode.QrCodeEncodingOptions(); //設置字符串轉(zhuǎn)換格式,確保字符串信息保持正確 options.CharacterSet = "UTF-8"; //設置繪制區(qū)域的寬度和高度的像素值 options.Width = width; options.Height = height; //設置二維碼邊緣留白寬度(值越大留白寬度大,二維碼就減小) options.Margin = 1; //實例化字符串繪制二維碼工具 barcodeWriter = new BarcodeWriter {Format=BarcodeFormat.QR_CODE,Options=options }; //進行二維碼繪制并進行返回圖片的顏色數(shù)組信息 return barcodeWriter.Write(formatStr); } ////// 根據(jù)二維碼圖片信息繪制指定字符串信息的二維碼到指定區(qū)域 /// /// 要生產(chǎn)二維碼的字符串信息 /// 二維碼的寬度 /// 二維碼的高度 ///返回繪制好的圖片 Texture2D ShowQRCode(string str,int width,int height) { //實例化一個圖片類 Texture2D t = new Texture2D(width, height); //獲取二維碼圖片顏色數(shù)組信息 Color32[] col32 = GeneQRCode(str, width, height); //為圖片設置繪制像素顏色信息 t.SetPixels32(col32); //設置信息更新應用下 t.Apply(); //將整理好的圖片信息顯示到指定區(qū)域中 return t; } ////// 開始繪制指定信息的二維碼 /// /// void DrawQRCode(string formatStr) { //注意:這個寬高度大小256不要變。不然生成的信息不正確 //256有可能是這個ZXingNet插件指定大小的繪制像素點數(shù)值 Texture2D t = ShowQRCode(formatStr, 256, 256); //顯示到UI界面的圖片上 QRCode.texture = t; } public string QRCodeText = "二維碼"; void DrawButtonClick() { DrawQRCode(QRCodeText); } private void Start() { drawbutton.onClick.AddListener(DrawButtonClick); } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。