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插件系列之二维码的更多相关文章

  1. jquery.qrcode二维码插件生成彩色二维码

    jquery.qrcode.js 是居于jquery类库的绘制二维码的插件,用它来实现二维码图形渲染支持canvas和table两种绘图方式. (jquery.qrcode.js 设置显示方式为tab ...

  2. 草料Chrome浏览器插件,让二维码更好用

    安装插件草料chrome插件,是专为chrome核心的浏览器开发的一个二维码应用增强工具插件. 自动将地址栏链接生成二维码 以谷歌原生的chrome浏览器为例,插件安装成功后会在浏览器地址栏旁边出现一 ...

  3. 使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法

    一.简介 1.说明 qrcode其实是通过使用jQuery实现图形渲染,画图,支持canvas(HTML5)和table两种方式,您可以到https://github.com/jeromeetienn ...

  4. jquery插件生成简单二维码

    除了利用第三方网站生成二维码外,这是一个比较简单的办法吧. <script src="/Scripts/jquery.qrcode.min.js" type="te ...

  5. jQuery.qrcode二维码插件生成网页二维码

    如果是一个固定的二维码,我们只需要在网上找个地方生成图片,然后放上图片就可以了.但如果是地址不固定需要根据页面来生成的话.就有两种做法,一个是后端根据页面做一个动态的二维码.一种是前端使用插件生成. ...

  6. CorelDRAW 二维码插件

    随着智能手机的流行,二维码在各个领域大量应用,这个插件在补CorelDRAW这方面的不足: 这个插件是 cpg 格式,安装请看这篇博客:http://www.cnblogs.com/o594cql/p ...

  7. Unity生成简易二维码

    最近项目需求,需要在Unity中动态生成二维码.所以就研究了一下,下面把动态生成二维码的方法向大家分享一下. 第一种方法 需要一个 ZXing.dll文件. 下载地址我会在文章结尾给出. 直接将下载好 ...

  8. C#运用GmaQrCode生成二维码

    项目中需要生成二维码,方法比较多,可以采用JS插件,也可以采用第三方插件后台生成二维码,在后台方法中可以采用QRCode或者GmaQrCode,现在介绍一种C#在后台生成二维码的方法: /// < ...

  9. 为jquery qrcode生成的二维码嵌入图片

    在一次微信项目中,需要实现通过扫描二维码来进行会议签到,二维码的生成选择了qrcode.js的版本,然后使用jquery.qrcode.js插件来绘制二维码. <script type=&quo ...

随机推荐

  1. 【我们一起写框架】MVVM的WPF框架(三)—数据控件

    这世上,没人能一次性写出完美无缺的框架:因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美. 所以,框架是个反复修改的东西,最终形成的东西. 如果你学了一点技术,觉得自己可以写出框架了,觉得自 ...

  2. JDBC事务控制

    概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并 ...

  3. npm --save-dev --save 的区别

    我们在使用npm install 安装模块或插件的时候,有两种命令把他们写入到 package.json 文件里面去,比如: --save-dev(-D) --save(-S) 在 package.j ...

  4. Java的SSH框架整合

    写了好多篇的Android代码了,在写几篇关于Java的,博客园里肯定都是java的前辈啊,写的不好多给意见. SSH,什么是SSH呢,Struts+Spring+Hibernate,这三个就是整个的 ...

  5. Python笔记-高阶函数

    1.函数式编程 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 传入函数 既然 ...

  6. Android MVP

    大家先看看目录结构 先看V层 View里面我写了一个接口LoginView 然后,在登录这个Activity 去实现这个接口,并实现其抽象方法.即看LoginActivity onCreate中引用了 ...

  7. MyDAL - .UpdateAsync() 之 .Set() 使用

    索引: 目录索引 一.API 列表 1.Set<M, F>(Expression<Func<M, F>> propertyFunc, F newVal) 如: .S ...

  8. PYTHON定义函数制作简单登录程序(详细)

    环境:python3.* 结构:   dict_name = {} #定义一个字典,后面用到 def newuser(): #定义注册函数 prompt1='login desired:' while ...

  9. JAVA EE获取浏览器和操作系统信息

    一.原理说明:  1. 浏览器访问服务端时,Http请求头上会带上客户端一些信息,可通过"user-agent"获取. //java获取方法如下,其他语言也有自己获取方法 Stri ...

  10. robotFramework第二篇之关键字的定义和使用

    lesson.robot *** Keywords *** 打开谷歌浏览器并访问百度首页 Log 打开浏览器,输入http://www.baidu.com,进入百度首页 输入用户名 [Argument ...