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. Nginx反向代理和Node.js后端解决跨域问题

    最近在写自己的博客,涉及到跨域的问题,自己捣鼓许久,终于解决了.然后总结一下,记录一下,日后遇到类似的问题的时候也可以得到一些启发. 一.什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏 ...

  2. chrome主页被篡改为hao123 win10系统

    应该是开了个从流氓网站下的蓝灯,然后发现主页被篡改 尝试chrome设置修改无效,应该是快捷方式被改了 系统 win10 1.打开对应的下面两个地址,找到chrome的快捷方式,右键属性 C:\Use ...

  3. Myeclipse10.7添加本地插件方法

    -

  4. css 半圆效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 突破瓶颈,再出发 - PM过程能力成熟度5级

    尽管程度不同,但PM的每个级别都在践行过程改进,并在4级借助数据,达到了“登峰造极”的程度.随着量化与统计分析的深入,项目会被优化到极其稳定的状态,组织的过程改进也就此进入了平台期. 平台期可以被视为 ...

  6. 评估指标【交叉验证&ROC曲线】

    # -*- coding: utf-8 -*- """ Created on Mon Sep 10 11:21:27 2018 @author: zhen "& ...

  7. vsftpd.configro

    mmp卸载了vsftpd后 配置文件没了 安装也没有 留个做备份 嘿嘿 原始的: # Please see vsftpd.conf. for all compiled in defaults. # # ...

  8. SQL Server数据库————模糊查询和聚合函数

    ***********模糊查询*********/ 关键字: like (!!!!字符串类型) in (,,)  匹配()内的某个具体值(括号里可以写多个值) between... and.. 在某两 ...

  9. Java Memory Management

    How Memory works in Java The role of the stack - Each time you call a function, Java pushed the loca ...

  10. golang 使用匿名结构体的问题

    golang允许使用匿名结构体,形如 type Test struct { param1 struct { param2 string } } 一般在使用的时候可以直接这样初始化 a := Test{ ...