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

创新互联建站专业为企业提供江汉网站建设、江汉做网站、江汉网站设计、江汉网站制作等企业网站建设、网页设计与制作、江汉企业网站模板建站服务,10年江汉做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
借鉴自某位大佬不记得了
using System.Collections; using System.Collections.Generic; using UnityEngine; using ZXing; using UnityEngine.UI; ////// 二维码扫描识别功能 /// public class TestQRCodeScanning : MonoBehaviour { [Header("摄像机检测界面")] public RawImage cameraTexture;//摄像机映射显示区域 private WebCamTexture webCamTexture;//摄像机映射纹理 public Text text;//用来显示扫描信息 //二维码识别类 BarcodeReader barcodeReader;//库文件的对象(二维码信息保存的地方) ////// 开启摄像机和准备工作 /// void DeviceInit() { //1、获取所有摄像机硬件 WebCamDevice[] devices = WebCamTexture.devices; //2、获取第一个摄像机硬件的名称 string deviceName = devices[0].name;//手机后置摄像机 //3、创建实例化一个摄像机显示区域 webCamTexture = new WebCamTexture(deviceName, 400, 300); //4、显示的图片信息 cameraTexture.texture = webCamTexture; //5、打开摄像机运行识别 webCamTexture.Play(); //6、实例化识别二维码信息存储对象 barcodeReader = new BarcodeReader(); } Color32[] data;//二维码图片信息以像素点颜色信息数组存放 ////// 识别摄像机图片中的二维码信息 /// 打印二维码识别到的信息 /// void ScanQRCode() { //7、获取摄像机画面的像素颜色数组信息 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 初始化函数 /// 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;
///
/// 将制定字符串信息转换成二维码图片信息
///
/// 要生产二维码的字符串信息
/// 二维码的宽度
/// 二维码的高度
/// 返回二维码图片的颜色数组信息
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);
}
///
/// 根据二维码图片信息绘制指定字符串信息的二维码到指定区域
///
/// 要生产二维码的字符串信息
/// 二维码的宽度
/// 二维码的高度
/// 返回绘制好的图片
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;
}
///
/// 开始绘制指定信息的二维码
///
///
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);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
标题名称:unityZXing二维码的生成与扫描
本文链接:http://www.jxjierui.cn/article/jgjeeg.html


咨询
建站咨询
