Unity插件系列之二维码
1.二维码常见的生成与识别途径
1.草料二维码 https://cli.im/text
2.在软件中实现生成和扫描二维码 使用zxing实现
zxing是一个用java写的开源项目,zxing.net是移植到.net工程上的。
https://github.com/micjahn/ZXing.Net
2.实现二维码的识别
1.Unity工程
2.让RawImage显示摄像头内容
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing;
using UnityEngine.UI; public class QRCodeTest : MonoBehaviour {
public RawImage cameraTexture; private WebCamTexture webCamTexture;
// Use this for initialization
void Start () {
WebCamDevice[] devices = WebCamTexture.devices;
string deviceName = devices[0].name;
webCamTexture = new WebCamTexture(deviceName, 400, 300);
cameraTexture.texture = webCamTexture;
webCamTexture.Play();
} // Update is called once per frame
void Update () { }
}
3.扫描功能实现代码(代码有点长,慢慢看)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing;
using UnityEngine.UI; public class QRCodeTest : MonoBehaviour {
public RawImage cameraTexture;//存储摄像头拍到的内容 private WebCamTexture webCamTexture;//摄像头的内容 Color32[] data; BarcodeReader barcodeReader;//Zxing提供的读取摄像头内容的方法 float interval = 0f;//做定时器用
// Use this for initialization
void Start () {
//打开了摄像头
WebCamDevice[] devices = WebCamTexture.devices;
string deviceName = devices[0].name;
webCamTexture = new WebCamTexture(deviceName, 400, 300);
cameraTexture.texture = webCamTexture;
webCamTexture.Play(); barcodeReader = new BarcodeReader();
} // Update is called once per frame
void Update () {
interval += Time.deltaTime;
if (interval >= 3f) {
ScanQRCode();
interval = 0f;
}
} void ScanQRCode()
{
//GetPixels32是把格式转换为Color32的方法
data = webCamTexture.GetPixels32();
//result存储读取的内容
var result = barcodeReader.Decode(data, webCamTexture.width, webCamTexture.height); if (result != null) {
Debug.Log(result.Text);
}
}
}
3.实现二维码的生成 (注:我关掉网络也能成功识别生成的二维码,说明这东西是离线的)
1.新建一个RawImage存储生成的识别图
2.添加了生成二维码的方法:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing;
using UnityEngine.UI; public class QRCodeTest : MonoBehaviour {
public RawImage cameraTexture;//存储摄像头拍到的内容
public RawImage QRCode;//存储生成的二维码 private WebCamTexture webCamTexture;//摄像头的内容 Color32[] data; BarcodeReader barcodeReader;//Zxing提供的读取摄像头内容的方法
BarcodeWriter barcodeWriter;//Zxing提供的写内容的方法 float interval = 0f;//做定时器用
// Use this for initialization
void Start () {
//打开了摄像头
WebCamDevice[] devices = WebCamTexture.devices;
string deviceName = devices[0].name;
webCamTexture = new WebCamTexture(deviceName, 400, 300);
cameraTexture.texture = webCamTexture;
webCamTexture.Play(); barcodeReader = new BarcodeReader();
} // Update is called once per frame
void Update () {
interval += Time.deltaTime;
if (interval >= 3f) {
ScanQRCode();
interval = 0f;
} //按下空格键生成二维码
if (Input.GetKeyDown(KeyCode.Space))
{
//在这种写法里 只能填入256
ShowQRCode("我爱学习", 256, 256);
//如果想要其他大小的二维码呢?见文章底部链接
}
} //扫描二维码方法
void ScanQRCode()
{
//GetPixels32是从一张图片上获取颜色的方法
data = webCamTexture.GetPixels32();
//result存储读取的内容
var result = barcodeReader.Decode(data, webCamTexture.width, webCamTexture.height); if (result != null) {
Debug.Log(result.Text);
}
} //显示生成的二维码
void ShowQRCode(string str,int width,int height) {
//定义texture2d并且填充
Texture2D t = new Texture2D(width, height);
t.SetPixels32(GeneQRCode(str, width, height));
t.Apply(); QRCode.texture = t;
} //返回Color32图片颜色的方法
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 = width;
options.Margin = 1;//二维码距离边缘的空白 barcodeWriter = new BarcodeWriter { Format = ZXing.BarcodeFormat.QR_CODE, Options = options }; return barcodeWriter.Write(formatStr);
}
}
更多:
ZXing 二维码生成的坑 http://blog.sina.com.cn/s/blog_6ad33d350102xj8l.html
zxing.net读取和保存二维码,设置中文字符集,读取中文二维码 https://bbs.csdn.net/topics/391950715?page=1
Unity插件系列之二维码的更多相关文章
- jquery.qrcode二维码插件生成彩色二维码
jquery.qrcode.js 是居于jquery类库的绘制二维码的插件,用它来实现二维码图形渲染支持canvas和table两种绘图方式. (jquery.qrcode.js 设置显示方式为tab ...
- 草料Chrome浏览器插件,让二维码更好用
安装插件草料chrome插件,是专为chrome核心的浏览器开发的一个二维码应用增强工具插件. 自动将地址栏链接生成二维码 以谷歌原生的chrome浏览器为例,插件安装成功后会在浏览器地址栏旁边出现一 ...
- 使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法
一.简介 1.说明 qrcode其实是通过使用jQuery实现图形渲染,画图,支持canvas(HTML5)和table两种方式,您可以到https://github.com/jeromeetienn ...
- jquery插件生成简单二维码
除了利用第三方网站生成二维码外,这是一个比较简单的办法吧. <script src="/Scripts/jquery.qrcode.min.js" type="te ...
- jQuery.qrcode二维码插件生成网页二维码
如果是一个固定的二维码,我们只需要在网上找个地方生成图片,然后放上图片就可以了.但如果是地址不固定需要根据页面来生成的话.就有两种做法,一个是后端根据页面做一个动态的二维码.一种是前端使用插件生成. ...
- CorelDRAW 二维码插件
随着智能手机的流行,二维码在各个领域大量应用,这个插件在补CorelDRAW这方面的不足: 这个插件是 cpg 格式,安装请看这篇博客:http://www.cnblogs.com/o594cql/p ...
- Unity生成简易二维码
最近项目需求,需要在Unity中动态生成二维码.所以就研究了一下,下面把动态生成二维码的方法向大家分享一下. 第一种方法 需要一个 ZXing.dll文件. 下载地址我会在文章结尾给出. 直接将下载好 ...
- C#运用GmaQrCode生成二维码
项目中需要生成二维码,方法比较多,可以采用JS插件,也可以采用第三方插件后台生成二维码,在后台方法中可以采用QRCode或者GmaQrCode,现在介绍一种C#在后台生成二维码的方法: /// < ...
- 为jquery qrcode生成的二维码嵌入图片
在一次微信项目中,需要实现通过扫描二维码来进行会议签到,二维码的生成选择了qrcode.js的版本,然后使用jquery.qrcode.js插件来绘制二维码. <script type=&quo ...
随机推荐
- confd+etcd实现高可用自动发现
Confd是什么 Confd是一个轻量级的配置管理工具. 通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload. 对应的后端存储可以是etcd,redi ...
- python异常处理的哲学
所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...
- 初步认识Swiper_前端交互控制神器_滚动3D切换等特效简单制作
前言: 本人在项目的工作中负责研发,页面及交互基本都是交给前端去做的.以前前端写的东西大概都知道,都是一些JS,CSS和HTML等的一些基本控制,都懂!但是今天前端突然做了一个具有特殊效果的DOM:页 ...
- 第一册:lesson 113.
原文:Small changes. question:Who has got some small changes? Fares,please! Trafalgar Square,please. I' ...
- 基础知识:IDE集成开发环境(pycharm)、基本数据类型、用户的交互、运算符
今日内容: 1.IDE集成开发环境(pycharm) 2.基本数据类型(int.float.str.list.dict) 3.用户的交互(注释.输入input.输出print) 4.运算符(分类及使用 ...
- 六大设计原则(四)ISP接口隔离原则(上)
ISP的定义 首先明确接口定义 实例接口 我们在Java中,一个类用New关键字来创建一个实例.抛开Java语言我们其实也可以称为接口.假设Person zhangsan = new Person() ...
- vue px 转rem
来自:https://www.cnblogs.com/wangqiao170/p/8652505.html 侵 删 每一个认真生活的人,都值得被认真对待 vue px转换为rem 前端开发中还原设 ...
- python从任意文件读取邮件地址输出的代码
如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...
- 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法
今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...
- Delphi 项目配置选项
打开项目设置窗口: 通过菜单:项目>选项 快捷键 :Shift+Ctrl+F11 Delphi编译器选项说明 Conditional defines 指定条件编译器指令中引用的符号. O ...