unity二維碼生成(新)
来源:互联网 发布:盟军敢死队1 for mac 编辑:程序博客网 时间:2024/06/11 11:41
二維碼的生成
關於二維碼的生成細節和原理,可以參考:http://blog.csdn.net/zy799894671/article/details/19983041#:
可以參考我的上一篇博文來學習二維碼的製作;
這裏我就直接上代碼了:
/// <summary>/// write by 52cwalk,if you have some question ,please contract lycwalk@gmail.com/// </summary>/// using UnityEngine;using System.Collections;using System.Collections.Generic;using ZXing;using ZXing.QrCode;using ZXing.QrCode.Internal;using ZXing.Common;public class QRCodeEncodeController : MonoBehaviour {private Texture2D m_EncodedTex;public int e_QRCodeWidth;public int e_QRCodeHeight;public delegate void QREncodeFinished(Texture2D tex); public event QREncodeFinished e_QREncodeFinished; //定義事件BitMatrix byteMatrix;void Start (){int targetWidth = Mathf.Min(e_QRCodeWidth,e_QRCodeHeight);targetWidth = Mathf.Clamp (targetWidth, 128, 1024);e_QRCodeWidth = e_QRCodeHeight = targetWidth;m_EncodedTex = new Texture2D(e_QRCodeWidth, e_QRCodeHeight);}void Update (){}/// <summary>/// Encode the specified string ./// </summary>/// <param name="valueStr"> content string.</param>public void Encode(string valueStr){//var writer = new QRCodeWriter();var writer = new MultiFormatWriter();Dictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>(); //set the code typehints.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); byteMatrix = writer.encode( valueStr, BarcodeFormat.QR_CODE, e_QRCodeWidth, e_QRCodeHeight,hints); //writer1.encode("ddd",BarcodeFormat.for (int i =0; i!= e_QRCodeWidth; i++) {for(int j = 0;j!= e_QRCodeHeight;j++){if(byteMatrix[i,j]){m_EncodedTex.SetPixel(i,j,Color.black);}else{m_EncodedTex.SetPixel(i,j,Color.white);}}}///rotation the image Color32[] pixels = m_EncodedTex.GetPixels32();pixels = RotateMatrixByClockwise(pixels, m_EncodedTex.width);m_EncodedTex.SetPixels32(pixels); m_EncodedTex.Apply ();e_QREncodeFinished (m_EncodedTex); //編譯完成觸發事件,在其他類中添加觸發事件調用的方法}/// <summary>/// Rotates the matrix.Clockwise/// </summary>/// <returns>The matrix.</returns>/// <param name="matrix">Matrix.</param>/// <param name="n">N.</param>static Color32[] RotateMatrixByClockwise(Color32[] matrix, int n) {Color32[] ret = new Color32[n * n];for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {ret[i*n + j] = matrix[(n - i - 1) * n + j];}}return ret;}/// <summary>/// anticlockwise/// </summary>/// <returns>The matrix.</returns>/// <param name="matrix">Matrix.</param>/// <param name="n">N.</param>static Color32[] RotateMatrixByAnticlockwise(Color32[] matrix, int n) {Color32[] ret = new Color32[n * n];for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {ret[i*n + j] = matrix[(n - j - 1) * n + i];}}return ret;}}
如:
/// <summary>/// write by 52cwalk,if you have some question ,please contract lycwalk@gmail.com/// </summary>/// /// using UnityEngine;using System.Collections;using UnityEngine.UI;public class QREncodeTest : MonoBehaviour {public QRCodeEncodeController e_qrController;public RawImage qrCodeImage;public InputField m_inputfield;// Use this for initializationvoid Start () {if (e_qrController != null) {e_qrController.e_QREncodeFinished += qrEncodeFinished;}}void qrEncodeFinished(Texture2D tex) //觸發事件調用此方法{if (tex != null && tex != null) {qrCodeImage.texture = tex;} else {}}public void Encode() {if (e_qrController != null) {string valueStr = m_inputfield.text;e_qrController.Encode(valueStr); //傳入需要編譯成二維碼的string字段}}public void ClearCode(){qrCodeImage.texture = null;m_inputfield.text = "";}}
0 0
- unity二維碼生成(新)
- Unity连接数据库(超级新手版)
- Unity新UI系统
- Unity 5新特性
- (五)Unity5.0新特性------unity中编写脚本
- Unity3D 05-理解Unity的新GUI系统(UGUI)
- linux工程生成步骤(新)
- unity C#生成楼梯
- unity 生成assetbundle文件
- Unity生成.assets
- Unity脚本生成图片
- Unity生成二维码功能
- unity生成代码模板
- 二维码 生成 unity
- Unity生成二维码
- Unity 梯子生成算法
- Unity Mesh生成图形
- Unity中生成二维码
- 多线程同步的五种方法
- fork创建子进程利用pipe管道通信
- 堆排序Heap Sort——浅显易懂+Java实现
- break ,continue ,return 的区别及作用?
- 媒体查询 @Media
- unity二維碼生成(新)
- [2016ICPC 青岛网络预选赛] HDU 5889 网络流
- Console命令的常见应用
- UVa - 489 - Hangman Judge(刽子手游戏)
- fastjson是阿里巴巴出的号称最快解析速度的插件
- iOS实现一个颜色渐变的弧形进度条
- queryTimeout对Cobar不生效的原因
- 接口签名认证思路
- html 块,布局