日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二维码的生成与扫描

發布時間:2025/4/16 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二维码的生成与扫描 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/// <summary>
/// Start 初始化函數
/// </summary>
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:https://archive.codeplex.com/?p=zxingnet

下載之后把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;
/// <summary>
/// 將制定字符串信息轉換成二維碼圖片信息
/// </summary>
/// <param name="formatStr">要生產二維碼的字符串信息</param>
/// <param name="width">二維碼的寬度</param>
/// <param name="height">二維碼的高度</param>
/// <returns>返回二維碼圖片的顏色數組信息</returns>
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);

}

/// <summary>
/// 根據二維碼圖片信息繪制指定字符串信息的二維碼到指定區域
/// </summary>
/// <param name="str">要生產二維碼的字符串信息</param>
/// <param name="width">二維碼的寬度</param>
/// <param name="height">二維碼的高度</param>
/// <returns>返回繪制好的圖片</returns>
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;
}

/// <summary>
/// 開始繪制指定信息的二維碼
/// </summary>
/// <param name="formatStr"></param>
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);
}
}

轉載于:https://www.cnblogs.com/hyhy904/p/11277866.html

總結

以上是生活随笔為你收集整理的二维码的生成与扫描的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。