GJM : Unity3D结合ZXING制作二维码识别
二维码比起条形码更有自身的优势,比如它高达千个字符的容量、纠错能力及汉字支持。二维码现在在国内已经有不少领域应用到,特别是在网站及移动端中更是应用得更加广泛。
最近的项目中也需要用到二维码去显示一些摘要信息,然后用手机或者其它客户端显示出来。网上其实也不少demo,但大多是Java跟C#之类。
因为Unity3D本身也支持C#语法并在mono环境下运行,所以我们查找二维码在C#下的示例即可。于是又拼命的google,发现两个精品包,一个为zxing(地址为http://code.google.com/p/zxing/downloads/list),另一个则为QrCode(地址为http://qrcodenet.codeplex.com/)。zxing之听就早有耳闻,特别是在java上用得特别多,而其实QrCode也不少人用,是一个新神器来的,之前是采用了zxing的端口。
QrCode算是比较新颖的包,而且支持也相当不错,但很可惜,只能是在.net 4.0环境下运行,所以在unity3d下我只能选择zxing。
下面我们做一个简单的示例去显示一个二维码。
先把mono版本的System.Drawing.dll复制到untiy3d项目的任意位置下。
引入命名空间
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | usingUnityEngine;usingSystem;usingSystem.IO;usingSystem.Collections;usingSystem.Drawing;usingcom.google.zxing.qrcode;usingcom.google.zxing;usingcom.google.zxing.common;usingByteMatrix = com.google.zxing.common.ByteMatrix;usingEAN13Writer = com.google.zxing.oned.EAN13Writer;usingEAN8Writer = com.google.zxing.oned.EAN8Writer;usingMultiFormatWriter = com.google.zxing.MultiFormatWriter; | 
定义一个Texture2D类型用于显示二维码,命名为_texure2d,长与宽为300像素;定义一个ByteMatrix类,用于写入二维码信息。
| 1 2 3 4 5 6 | privateint_width = 300;privateint_height = 300;publicTexture2D _texure2d;privatebool_success;privatestringinput = "";ByteMatrix byteMatrix; | 
记得初始化Texture2D。
| 1 2 3 4 | voidStart(){    _texure2d = newTexture2D(_width, _height);} | 
下面我们用一下文本输入框作为二维码的信息来源,再添加一个按钮作为触发。发明一个MultiFormatWriter用于二维码写入用,用其encode方法生成一个ByteMatrix类。再用ByteMatrix的方法ToBitmap成生bitmap对象,最后得到bitmap的数组再赋值于texture2d。在这里我定义了一个ImageToByte提取bitmap的数组。
因为是UI事件,所以我们把代码写到OnGUI中。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | voidOnGUI(){    input = GUI.TextField(newRect(100, 50, 100, 40), input);    if(GUI.Button(newRect(100, 100, 100, 40), "生成"))    {            byteMatrix = newMultiFormatWriter().encode(input, BarcodeFormat.QR_CODE, _width, _height);            _texure2d.LoadImage(ImageToByte(byteMatrix.ToBitmap()));            _success = true;    }    //画图    if(_success) GUI.DrawTexture(newRect(100, 300, 300, 300), _texure2d);} | 
| 1 2 3 4 5 | staticbyte[] ImageToByte(Image img){    ImageConverter converter = newImageConverter();    return(byte[])converter.ConvertTo(img, typeof(byte[]));} | 
PS:
- zxing是提供了项目源码,所以我们要把整个项目下载下来,我是下载ZXing-2.1.zip。之后解压,然后编译它的csharp目录下的代码。
- 也许zxing中文会显示乱码,这时用“DEFAULT_BYTE_MODE_ENCODING ”查找整个项目。然后把 System.String DEFAULT_BYTE_MODE_ENCODING = “ISO-8859-1″的ISO-8859-1改为UTF-8。
GJM : Unity3D结合ZXING制作二维码识别的更多相关文章
- Android二维码识别 开源项目ZXing的编译
		Android二维码识别 开源项目ZXing的编译 Android端的条形码/二维码识别功能 因为手机端的输入不是很方便,所以条形码/二维码的扫描是一种很有效的解决手段. 比较流行的手机应用中,常用的 ... 
- 提高zxing生成二维码的容错率及zxing生成二维码的边框设置
		最近做了一个项目要生成二维码,跟几年前不同,最近大家都喜欢在二维码中间加logo. 加logo倒是不难,两个图片叠一起就是了,但是遇到一个新问题,logo加得太大的话,会导致二维码扫描不出来;加的太小 ... 
- 实例源码--ZXing识别条形码和二维码识别源码
		下载源码 技术要点: 1.ZXing库的 使用 2.识别条形码和二 维码 3.自定义视图 4.源码带有非常详 细的中文注释 ...... 详细介绍: 1.ZXing库 ZXing是个很经典的条码/ ... 
- 【转】Android平台下利用zxing实现二维码开发
		http://www.cnblogs.com/dolphin0520/p/3355728.html 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描 ... 
- Python zxing 库解析(条形码二维码识别)
		各种扫码软件 最近要做个二维码识别的项目,查到二维码识别有好多开源的不开源的软件 http://www.oschina.net/project/tag/238/ Zbar 首先试了一下Zbar,pyt ... 
- (转)ZXing解析二维码
		1 ZXing解析二维码 上一篇文件已经说过如何用ZXing进行生成二维码和带图片的二维码,下面说下如何解析二维码 二维码的解析和生成类似,也可以参考google的一个操作类 BufferedImag ... 
- (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
		场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ... 
- [置顶]
        xamarin android使用zxing扫描二维码
		好久没写了,这片文章篇幅不长,概述一下在xamarin android中用 ZXing.Net.Mobile库扫描二维码读取url的示例.扫码支付,扫码登录,App上各种各样的扫码,好像没个扫码的就有 ... 
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
		Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ... 
随机推荐
- android TextView  文字垂直的设置
			<TextView android:id="@+id/tv_status" android:layout_width="wrap_content" and ... 
- AngularJS快速入门01-基础
			记得第一次听说AngularJS这项很赞的Web的前端技术,那时还是2014年,年中时我们我的一个大牛兄弟当时去面试时,被问到了是否熟悉该技术,当时他了解和使用的技术比较多.我们询问他面试情况时,他给 ... 
- 不同场景下 MySQL 的迁移方案
			一 目录 一 目录 二 为什么要迁移 三 MySQL 迁移方案概览 四 MySQL 迁移实战 4.1 场景一 一主一从结构迁移从库 4.2 场景二 一主一从结构迁移指定库 4.3 场景三 一主一从结构 ... 
- 前端优化-Img与background
			当img 遇到 background,这个世界就是这么小~~~~~ 1 从解析机制看 Img属于html标签,background是css方法.一个页面由html.css.js组成,按照浏览器解析机制 ... 
- Geometry Curve of OpenCascade BRep
			Geometry Curve of OpenCascade BRep eryar@163.com 摘要Abstract:几何曲线是参数表示的曲线 ,在边界表示中其数据存在于BRep_TEdge中,BR ... 
- java坦克大战源码下载
			HJZGG:https://github.com/hjzgg/hjzgg_tank_java 解压之后运行可执行jar包即可!效果图如下: v 1.游戏开始 v 2.选择地图 v 3.开始游戏 v 4 ... 
- PHP内核的学习--PHP生命周期
			一切的开始: SAPI接口 SAPI(Server Application Programming Interface)指的是PHP具体应用的编程接口, 就像PC一样,无论安装哪些操作系统,只要满足了 ... 
- Tools - 国内开源镜像网站
			阿里云镜像 网易开源镜像站 搜狐开源镜像站 香港中文大学 清华大学开源软件镜像站 中国科学技术大学开源软件镜像 中国互联网络信息中心开源镜像站 - apache开源软件镜像 
- Web 开发人员和设计师必读文章推荐【系列二十九】
			<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ... 
- C语言中两位ASCII码可以表示汉字
			最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ... 
