二维码制作及识别
- 格式:doc
- 大小:175.50 KB
- 文档页数:12
qr二维码原理及识别流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!QR 二维码是一种矩阵式二维码,它由黑白相间的小方块组成,可以存储大量的信息。
南京航空航天大学课程设计题目二维码的生成及识别何俊豪韩怀晓晋晓飞小组成员:瞿诗华薛莉二〇一五年十一月第一章QR码简介QR码是由日本Denso公司与1994年制定出来的一种矩阵二维码符号,它除了具有信息容量大、可靠性高、可表示汉字及图像信息、保密性强等优点外,还具有超高速响应、全方位识别等特点。
QR码符号是由正方形的细小模块构成,分为功能区和编码区。
功能图形包括位置探测图形、分隔符、定位图形、校正图形、格式信息、版本信息等,编码区域包括数据编码块和纠错码图形。
普通QR码基本图形及区域功能对照图如图1.1所示。
图1.1 QR码基本结构1.1 QR码的密度标识图形位于两个“回”字标识符之间的黑白相间的条纹,用红色线标注的,这个区域可以用于确定QR码符号的像素方块的密度(即一个像素的大小),标识识别模块如图1.2所示。
图1.2 QR码密度标识图形1.2 位置探测图形位置探测图形由三个重叠的同心正方形构成,如图1.3所示。
通过探测位置探测图形可以迅速的从背景图像中判断出QR码符号的大致位置。
图1.3 QR码探测图形二维码定位就是找到二维码符号的位置探测图形,对有明显条码特征的区域进行定位,然后根据图形结构特征值对不同的条码符号进行进一步的处理。
通过QR码的定位图形,可以得到左上角位置探测图形的边界点和左下角位置探测图形的边界点如图1.4(a)所示,因此可以采用鲁棒性较好的算法拟合条码左边框,然后通过直线拟合得到条码的上边框直线。
在此基础上构建直角三角形,寻找出图形中心,如图1.4(b)所示,并可以得到第四个交点,如图1.4(c)所示。
(a)确定左边界和上边界(b)确定探测图形中心(c)确定第四个交点图1.4 条码图像初步定位流程1.3 版本信息QR码符号共有40种规格,版本1的规格为21模块×21模块,版本2为25模块×25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块×177模块。
二维码识别技术解析Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998二维码识别技术解析当你频繁和它照面的时候,你有没有过这样的好奇:为什么用手机扫一下就会看到一个“花花世界”二维码的颜色为什么是黑白相间的呢这些不规则几何图形中究竟藏着怎样的“秘密”常见的二维码上为啥三个角上有方块,这是三个定位点,图形旋转也不影响识别要了解二维码的原理,我们先要来好好认识一下它。
现在最常见的二维码是OR 二维码(OR是一种码制),我们便以它为例。
我们看一个二维码,最先看到的当然是几何图形。
这些图形中,藏了不少重要的“部件”。
南京邮电大学计算机学院副教授黄海平为我们做了详细分析。
首先,OR二维码的三个“角”上有三个方块,可别小瞧这方块,它叫位置探测图形。
有了这三个点,不管是从哪个方向读取二维码,信息都可以被识别。
即使将二维码图形旋转,也可以识别。
也许你会问,为什么不是四个角上都有方块呢事实上,是可以设更多的点,但几何知识告诉我们,3点就可以确定一个平面,节省出的一个角可以嵌入更多信息。
另外,二维码上还有一些图形混杂在几何图形中,是肉眼看不出来的,比如定位图形和分隔符。
定位图形就是图中连接三个位置探测图形之间的两根“线”,它的作用是决定二维码符号中模块的坐标,而分隔符的作用是将位置探测图形与符号的其余部分分开。
也就是说,通过扫描能读取的数据信息在二维码中的位置是由定位图形和分隔符决定的。
还有两个图形肉眼也难以发现,位于左下角位置探测图形上面的是“版本信息”,每个二维码都有一个版本号,我们常说的、就是版本;包围在三个位置探测图形周边的则是“格式信息”,这指的是这个二维码采用的编码格式。
二维码为什么是黑白相间的黑色表示二进制的“1”,白色表示二进制的“0”“我们之所以对二维码进行扫描能读出那么多信息,就是因为这些信息被编入了二维码之中。
”黄海平说,“制作二维码输入的信息可以分成三类,文本信息,比如名片信息;字符信息,比如网址、电话号码;还有图片信息,甚至还可以包括简短的视频。
二维码识别技术解析当你频繁和它照面的时候,你有没有过这样的好奇:为什么用手机扫一下就会看到一个“花花世界”?二维码的颜色为什么是黑白相间的呢?这些不规则几何图形中究竟藏着怎样的“秘密”?常见的二维码上为啥三个角上有方块,这是三个定位点,图形旋转也不影响识别要了解二维码的原理,我们先要来好好认识一下它。
现在最常见的二维码是OR 二维码(OR是一种码制),我们便以它为例。
我们看一个二维码,最先看到的当然是几何图形。
这些图形中,藏了不少重要的“部件”。
南京邮电大学计算机学院副教授黄海平为我们做了详细分析。
首先,OR二维码的三个“角”上有三个方块,可别小瞧这方块,它叫位置探测图形。
有了这三个点,不管是从哪个方向读取二维码,信息都可以被识别。
即使将二维码图形旋转,也可以识别。
也许你会问,为什么不是四个角上都有方块呢?事实上,是可以设更多的点,但几何知识告诉我们,3点就可以确定一个平面,节省出的一个角可以嵌入更多信息。
另外,二维码上还有一些图形混杂在几何图形中,是肉眼看不出来的,比如定位图形和分隔符。
定位图形就是图中连接三个位置探测图形之间的两根“线”,它的作用是决定二维码符号中模块的坐标,而分隔符的作用是将位置探测图形与符号的其余部分分开。
也就是说,通过扫描能读取的数据信息在二维码中的位置是由定位图形和分隔符决定的。
还有两个图形肉眼也难以发现,位于左下角位置探测图形上面的是“版本信息”,每个二维码都有一个版本号,我们常说的V1.0、V2.0就是版本;包围在三个位置探测图形周边的则是“格式信息”,这指的是这个二维码采用的编码格式。
二维码为什么是黑白相间的黑色表示二进制的“1”,白色表示二进制的“0”“我们之所以对二维码进行扫描能读出那么多信息,就是因为这些信息被编入了二维码之中。
”黄海平说,“制作二维码输入的信息可以分成三类,文本信息,比如名片信息;字符信息,比如网址、电话号码;还有图片信息,甚至还可以包括简短的视频。
⼆维码的结构及识别⽅式移动⽀付及互联⽹信息技术的发展,相应⽽⽣的⼆维码给⼈们的⽣活带来是很多便利,只要扫⼀扫,就能轻松地获取其中包含的信息,⼩⼩⼆维码却包含着海量信息,下⾯我们来认识下⼆维码的结构及识别⽅式:1、⼆维码的结构⽬前市⾯上使⽤较多的⼆维码是QR码,QR码共有40种规格。
版本X的规格是(4X+17)×(4X+17),如图所⽰为版本7的QR 码的符号结构。
每个QR码符号由名义上的正⽅形模块构成,组成⼀个正⽅形阵列,其由编码区域和包括位置探测图形、位置探测图形分隔符、定位图形和校正图形等在内的功能图形组成。
(1)位置探测图形、位置探测图形分隔符:⽤于⼆维码的定位,对每个QR码来说,位置都是固定存在的,只是⼤⼩规格会有所差异;这些⿊⽩间隔的矩形块很容易进⾏图像处理的检测。
(2)校正图形:根据尺⼨的不同,校正图形的个数也不同。
校正图形主要⽤于QR码形状的校正,尤其是当QR码印刷在不平坦的表⾯,或者拍照时发⽣畸变等。
(3)定位图形:这些⼩的⿊⽩相间的格⼦就好像坐标轴,在QR码上定义了⽹格。
(4)格式信息:表⽰该QR码的纠错级别,分为L、M、Q、H。
(5)数据:使⽤⿊⽩的⼆进制⽹格编码内容。
8个格⼦可以编码⼀个字节。
(6)版本信息:即QR码的规格,每⼀版本符号⽐前⼀版本每边增加4个模块。
(7)纠错码字:⽤于修正QR码损坏带来的错误。
2、⼆维码的识别由于不同颜⾊的物体,其反射的可见光的波长不同,⽩⾊物体能反射各种波长的可见光,⿊⾊物体则能吸收各种波长的可见光。
因此利⽤⼆维码符号中颜⾊的光反射差异的技术特点来实现⼆维码的⾃动识别。
识别过程为:光源发光→照射到⼆维码符号表⾯→光反射→光电转换器接收并进⾏光电转换产⽣模拟电信号→模拟电信号经过放⼤、滤波、整形,形成⽅波信号→译码器译码→数字信号。
识别时⼀般要求⾸读率在85%以上,误码率低于0.01%,拒识率低于1%。
其中,⾸读率=(⾸次读出⼆维码符号数量/识读⼆维码符号的总数量)×100%;误码率=(错误识别次数/误码识别总次数)×100%;拒识率=(不能识别的⼆维码符号数量/⼆维码符号的总数量)×100%。
单位机动车二维码制作一、背景介绍随着现代化科技的快速发展,传统的单位机动车管理方式已经无法满足管理和监控的需求。
传统的纸质车辆证繁琐、易损坏、易丢失,难以进行统一管理和验证。
为了提高单位车辆管理的效率和安全性,单位机动车二维码制作成为了一种趋势。
二、单位机动车二维码的定义单位机动车二维码是一种可以通过扫描识别的二维码,用来标识和管理单位所拥有的机动车辆。
每辆机动车都拥有唯一的二维码,能够提供车辆相关的信息,如车辆型号、车牌号码、车主信息等。
通过扫描二维码,相关人员可以迅速获取车辆信息,实现快速识别和管理。
三、单位机动车二维码制作流程单位机动车二维码的制作包括以下几个步骤:1. 数据准备在制作单位机动车二维码之前,需要准备相关数据,包括每辆机动车的车辆型号、车牌号码、车辆所有人信息等。
这些数据需要按照一定格式整理,以便后续的二维码生成和管理。
2. 二维码生成二维码生成是制作单位机动车二维码的核心步骤。
可以利用开源的二维码生成库或在线生成工具,将车辆信息与二维码进行关联,生成唯一的二维码。
生成的二维码可以保存为图片格式或直接输出为文档形式,以便后续的使用。
3. 二维码打印生成的单位机动车二维码可以通过打印的方式制作成实物贴纸,粘贴在机动车的车辆证上。
确保二维码的质量和清晰度,以便后续的扫描识别。
4. 二维码关联车辆信息生成的单位机动车二维码与车辆信息之间需要建立关联。
可以通过数据库或云平台的方式,将二维码和车辆信息进行绑定,以便后续的查询和管理。
四、单位机动车二维码的应用单位机动车二维码的应用可以带来以下好处:1.便捷管理:通过扫描二维码,工作人员可以快速获取车辆信息,无需翻阅繁琐的纸质文件。
2.实时监控:通过二维码关联的车辆信息,可以实时监控车辆的位置和状态,提高车辆的管理和调度效率。
3.防伪防篡改:单位机动车二维码具有唯一性,难以伪造和篡改,可以提高车辆信息的真实性和安全性。
4.信息共享:通过云平台的方式,单位机动车二维码可以实现信息共享,方便相关部门的查询和协作。
图片简介:本技术介绍了一种二维码的识别方法,包括:采集包含发光显示的二维码的待识别图像;提取所述待识别图像中的位置探测图形,根据所述位置探测图形确定所述待识别图像中的二维码位置,并识别所述二维码位置内的二维码。
本技术还同时介绍了一种二维码的识别装置。
技术要求1.一种二维码的识别方法,其特征在于,所述方法包括:采集包含发光显示的二维码的待识别图像;提取所述待识别图像中的位置探测图形,根据所述位置探测图形确定所述待识别图像中的二维码位置,并识别所述二维码位置内的二维码。
2.根据权利要求1所述的方法,其特征在于,所述采集包含发光显示的二维码的待识别图像包括:选择识别二维码的工作模式;根据所述选择的工作模式访问并调用识别二维码的终端摄像头的底层,调整扫描参数,并采用所述选择的工作模式对应的测光方式采集所述待识别图像。
3.根据权利要求2所述的方法,其特征在于,所述采用所述选择的工作模式对应的测光方式采集所述待识别图像,包括:所述选择的工作模式为单二维码识别模式时,采用中央重点测光方式读取所述待识别图像中的二维码,将黑白的二维码区域凸显,并将二维码以外的背景区域虚化;所述选择的工作模式为多二维码识别模式时,采用平均测光方式读取所述待识别图像中的二维码,并对所述二维码进行特殊预处理。
4.根据权利要求3所述的方法,其特征在于,所述对所述二维码进行特殊预处理,包括:检测所述包含二维码的待识别图像的亮度分布,根据不同的亮度分布进行相应处理。
5.根据权利要求4所述的方法,其特征在于,所述检测所述包含二维码的待识别图像的亮度分布,根据不同的亮度分布进行相应处理,包括:若所述位置探测图形符合二维码的几何位置关系,且不同二维码区域的亮度分布有明显差异,则根据亮度等级依次确定多个二维码区域;若不同二维码区域的亮度分布无明显差异,则将提取的所有位置探测图形归为一个集合,任取集合内的三个位置探测图形进行排列组合,检测每种排列组合是否满足一定条件,并根据满足条件的排列组合确定二维码区域。
二维码及其识别技术什么是二维码二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示 二进制数据,被设备扫描后可获取其中所包含的信息。
一维条码的宽度记载着数据,而其长度没 有记载数据。
二维条码的长度、宽度均记载着数据。
二维条码有一维条码没有的 定位点”和 容 错机制”容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条 码上的资讯。
二维码的分类二维码的种类很多,不同的机构开发出的二维码具有不同的结构以及编写、读取方法。
主要 有堆叠式二维码(又称:行排式二维条码或堆积式二维条码或层排式二维条码)和矩阵式二维码(又 称棋盘式二维条码)两类:(1) 堆叠式二维码PDF417Code49Code16KUltracode(2) 矩阵式二维码QR 码Code OneAztecData MatrixMaxicode龙贝码矽感网格矩阵(GM矽感紧密矩阵(CM 汉信码其中龙贝码、矽感网格矩阵(GM )、矽感紧密矩阵(CM )和汉信码具有国内专利技术的二 维码。
国外的二维码主要类型见下图Data Matrix Maxi Code Aztec Code QR Code Vericode国内技术的二维码主要类型见下图PDF417Ultracode Code 49 Code 16K同饲汉信码PDF417 码PDF417条码是一种高密度、高信息含量的便携式数据文件,是实现证件及卡片等大容量、高 可靠性信息自动存储、携带并可用机器自动识读的理想手段。
PDF417码是由留美华人王寅敬(音)博士发明的。
PDF 是取英文Portable Data File 三个单词 的首字母的缩写,意为 便携数据文件”。
因为组成条码的每一符号字符都是由 4个条和4个空构 成,如果将组成条码的最窄条或空称为一个模块,则上述的4个条和4个空的总模块数一定为17, 所以称417码或PDF417码。
高可靠性信息自动存储、携带并可用机器自动识读的理想手段。
教学设计【问题1】观察图中的二维码,大家发现它们的规律了吗?我们发现,相较于一个维度上传递信息的条形码,二维码是从两个维度来传递信息的。
无论是堆叠式二维条码还是矩阵式二维条码,都是由黑白像素组成的,其中黑色像素表示二进制“1”,用白色像素表示二进制“0”。
所以,二维码编码的核心原理还是二进制。
由此,我们可以总结出二维码的定义如下:【二维码的定义】二维码是用某种特定的几何图形按一定规律在平面上(二维方向)分布的黑白相间的图形记录数据的信息。
【问题2】观察图上的QR码,有什么共同点?你能猜到他们是做什么用的吗?学生观察会发现每个二维码边缘都有明显的三个方框,根据自己的日常使用经验可以推测出用于定位的。
【问题3】为什么不用四个点或者两个点呢?【问题4】二维码丢失部分码还能正确读取吗?【问题5】二维码使用如此广泛,会被用完吗?带着这些问题,我们一起来看看二维码的组成结构。
【二维码的原理】PPT演示。
位置探测图形:组成寻像图形,用于确定二维码的位置和方向。
如果是两个方框,以对角的形式就无法确认正反,四个方框的话正着倒着都一样,而三个方框可以完整的定位一个鱼网址,从而造成个人信息泄露、资金被盗刷等后果。
【思考】我们在使用二维码的过程中需要注意什么?(1)了解收付款二维码的功能,不要随意出示自己的付款二维码;(2)不随意扫描非官方的二维码或安装未经验证的应用,切忌“见码就扫”。
一旦发现二维码存在覆盖、损毁或其他明显异常的情况,务必及时核实,防止有犯罪分子偷梁换柱更换二维码;(3)在通过网络社交软件非面对面转账时,不要使用识别图片二维码的方式进行转账汇款;(4)手机里安装安全软件,以增加手机的安全系数。
7.课堂小结最后请同学们利用自己熟悉的工具绘制出本节课的思维导图。
PHP⽣成⼆维码与识别⼆维码的⽅法详解【附源码下载】本⽂实例讲述了PHP⽣成⼆维码与识别⼆维码的⽅法。
分享给⼤家供⼤家参考,具体如下:⼆维码的分类线性堆叠式⼆维码矩阵式⼆维码⼆维码的优缺点优点信息容量⼤编码范围⼴容错能⼒强译码可靠性⾼可引⼊加密措施成本低,易制作缺点⼆维码技术成为⼿机病毒、钓鱼⽹站传播的新渠道信息泄密⽬前流⾏的三⼤国际标准PDF417:不⽀持中⽂DM:专利未公开,需⽀付专利费⽤QR CODE:专利公开,⽀持中⽂QR CODE 纠错能⼒L级:约可纠错7%的数据码字M级:约可纠错15%的数据码字Q级:约可纠错25%的数据码字H级:约可纠错30%的数据码字前提条件GD库⼀、PHP⽣成QR CODE官⽹:/下载源码:https:///endroid/qr-code⽬录结构1、qrcode_create.phpps:⽣成普通⼆维码<?phpinclude_once "./qrcode/phpqrcode.php";/*** 参数:p1:⼆维码包含的内容 p2:输出的⽂件名 p3:容错级别 p4:⼤⼩ p5:外边距margin p6:保存路径* 在浏览器上直接⽣成⼀个⼆维码(内容为abc)*/QRcode::png("abc");QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/*** ⽣成⽂件到本地* 参数:p1:⼆维码包含的内容 p2:输出的⽂件名 p3:容错级别 p4:⼤⼩ p5:外边距margin p6:是否保存并打印(false 直接⽣成 true ⽣成且打印)* PS:$saveandprint源码的p6参数做了修改*/QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);2、qrcode_logo.phpps:⽣成带Logo的⼆维码<?php/*** Created by PhpStorm.* User: user* Date: 2018/8/16* Time: 10:43*/include "./qrcode/phpqrcode.php";$txt = "测试内容";$picPathAndName = "./pic/ABC.jpg";//⼆维码保存路径和名称$level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是$margin = 2;//边距$saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//⽣成⼆维码图⽚QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){$QR = $picPathAndName; //已经⽣成的原始⼆维码图$Logo = './pic/logo.png';$Logo_re = './pic/test_logo.png';$QR = imagecreatefromstring(file_get_contents($QR));$Logo = imagecreatefromstring(file_get_contents($Logo));$QR_width = imagesx($QR); //⼆维码图⽚宽度$QR_height = imagesy($QR); //⼆维码图⽚⾼度$logo_width = imagesx($Logo); //logo图⽚宽度$logo_height = imagesy($Logo); //logo图⽚⾼度$logo_qr_width = $QR_width / 5;$scale = $logo_width / $logo_qr_width;$logo_qr_height = $logo_height / $scale;$from_width = ($QR_width - $logo_qr_width) / 2;imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); //输出图⽚imagepng($QR, $Logo_re);}3、qrcode_vcard.php (⽣成电⼦签名)<?php/*** Created by PhpStorm.* User: user* Date: 2018/8/15* Time: 23:00*/require_once "./qrcode/phpqrcode.php";/*** ⽣成电⼦签名* PS;使⽤微信扫描⼆维码*/$content = 'BEGIN:VCARD' . "\n";//起始标志$content .= 'VERSION:2.1' . "\n";//当前版本$content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名$content .= 'ORG:江苏东⼤集成电路系统有限公司' . "\n";//公司名称$content .= 'TITLE:PHP研发程序员' . "\n";//职位$content .= 'TEL;WORK;VOICE:0523-********' . "\n";//⼯作电话$content .= 'ADR;WORK:;;⾼新区星⽕路#2;南京市;江苏省;225762;中国' . "\n";//⼯作地址$content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家) $content .= 'TEL;TYPE:180********' . "\n";//移动电话$content .= 'EMAIL:123456@' . "\n";//邮箱$content .= 'URL:' . "\n";//个⼈主页$content .= 'END:VCARD' . "\n";//结束标志QRcode::png($content);⼆、JQUERY⽣成QR CODEjquery_create.php<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Jquery⽣成⼆维码</title><script src="https:///jquery-3.3.1.min.js"></script><script type="text/javascript" src="./jquery-qrcode/jquery.qrcode.min.js"></script></head><body><div id="qrcode"></div><script>//$('#qrcode').qrcode("this plugin is great");$('#qrcode').qrcode({width: 64,height: 64,text: "jason"});</script></body></html>三、PHP识别⼆维码1、⽅法⼀环境需求,安装如下扩展- ImageMagick- zbar- php-zbarcode2、⽅法⼆PHP识别⼆维码(⽆需安装扩展),初步测试普通⼆维码可以,带Logo的⼆维码,容错级别需要设置⾼⼀点页可以<?phpinclude_once('./qrReader/lib/QrReader.php');$qrcode = new QrReader('./test_logo.png'); //图⽚路径$text = $qrcode->text(); //返回识别后的⽂本echo $text;附:完整实例代码点击此处。
课程设计报告质量评价表选题(10%)需求分析(10%)系统设计(30%)编码(40%)测试(10%)总分课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况答辩评分评分项目分值评价参考标准评分总分优良中及格差选题的价值与意义10 9 8 7 6 4 文献综述10 9 8 7 6 4研究水平与设计能力20 19 17 15 13 10课程设计说明书(论文)撰写质量20 19 17 15 13 10学术水平与创新10 9 8 7 6 4 答辩效果30 28 25 22 19 15是否同意论文(设计)通过答辩□同意□不同意答辩小组成员签名答辩小组组长签名:年月日课程设计成绩评定表成绩汇总评分项目评分比例分数课程设计总分平时成绩20%课程设计报告30%答辩小组评分50%软件综合设计课程设计成绩评价表封面成都信息工程学院课程设计题目:二维码制作及识别作者姓名:邓涛班级:网络093班学号:2009121097指导教师:方睿日期:2011年 11月 03日作者签名:二维码制作及识别软件的设计与实现摘要随着计算机网络技术的飞速发展,数据信息越来越需要一种更方便快捷的传输途径,二维码的出现,使得在人们的日常生活中的数据交互变得跟方便易用。
例如当前各种手机的软件下载不需要在手机打开浏览器,输入长而繁琐地址来做下来了,只需要用手机将一个地方提供下载服务方哪里拍下提供给手机用户快速下载的二维码图片;即可快速方便的实现在手机上快速下载软件的目的。
本程序从当前用户需求出发,通过实现输入文字生成二维码QR二维码的编码和识别、解码算法。
为用户实现输入一段字符,可以生成二维码;选取一个二维码图片,可以还原成文字信息。
最后,通过测试与分析,说明该软件运行稳定、可靠,具有一定的实用价值。
关键词:二维码;QRCode目录1 引言 (1)1.1课题背景 (1)1.2国内外现状 (1)1.3本课题研究的迫切性即作用 (2)2程序设计 (2)2.1软件功能需求 (2)2.2开发环境 (2)2.3运行环境 (2)2.4软件结构设计 (3)3软件相关算法 (4)3.1二维码图片生成算法 (4)3.2二维码图片解析算法 (5)4软件界面 (6)4.1软件主界面 (6)4.2制作二维码界面 (7)4.3二维码解析以及解析结果界面 (7)结论 (8)参考资料 (8)1 引言1.1 课题背景二维码是二维条形码的一种,可以将网址、文字、照片等信息通过相应的编码算法编译成为一个方块形条码图案,手机用户可以通过摄像头和解码软件将相关信息重新解码并查看内容。
二维条码/二维码(dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。
同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。
在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K 等,QR码是1994年由日本Denso-Wave公司发明。
QR来自英文「Quick Response」的缩写,即快速反应的意思,源自发明者希望QR码可让其内容快速被解码。
QR码最常见于日本、韩国,并为目前日本最流行的二维空间条码。
1.2 国内外现状国内二维码的应用主要出现在电子凭证、防伪溯源、平面杂志以及数字出版等领域,技术服务方面可由易拍酷二维码服务平台提供。
应用案例非常广泛,各大会议活动中不断出现二维码签到,杭州,成都、北京公交站牌上的二维码指引市民方便出行;二维码火车票、飞机票等均属于二维码电子凭证类别。
日本和韩国是手机二维码应用最为普及的国度。
在韩国,二维码有着一个有趣的称谓“Magic Code”(魔码),颇有无处不在无所不能的意味。
而日本的二维码应用更为广泛,名片、户外广告、杂志、产品包装上,到处都印着二维码,人们可以通过二维码获得非常多的应用。
早在2005年,亚马逊(Amazon)就注意到了日本市场的风向,这家电子商务巨头为自己打造的潮流是鼓励用户在购买其网上服装的同时,下载一个标识着该商品的二维码并印贴在衣服上,如果旁人对这身装束感兴趣,可以用手机扫描上网,直达亚马逊的商品页面,而做了中介推销的这位顾客,则可以从亚马逊获得一定的佣金。
1.3 本课题研究的迫切性即作用现在的各种移动终端的不断普及,不管是智能手机还是现在快速发展的平板电脑;这都意味着二维码的应用将会越来越普遍,电影院促销可以采用发送二维码给用户,用户凭借二维码来作为自己获取促销优惠的凭证;二维码的便捷性使得二维码在我们日常生活的使用范围会越来越普遍。
二维码与一维码相比最大的优势就是容量大,携带的信息丰富。
二维码所带的信息是一维码的几十倍,能够将一些信息如生产日期、生产厂家放在条码中,更有利于厂家防伪。
另外,二维码还有纠错能力,二维码撕掉一半或者被污染了,所带的信息还可以还原,而一维码就做不到这一点。
本课题通过对二维码生成和解析算法的研究,制作一个小巧的软件提供给用户使用,使用户能够快速的制作二维码图片以及获取二维码所包含的信息。
2程序设计2.1 软件功能需求软件应该实现用户输入一段字符,可以生成二维码;选取一个二维码图片,可以还原成文字信息。
2.2 开发环境操作系统:Windows 7 旗舰版32位开发工具:Eclipse for RCP and RAP Developers 3.72.3 运行环境windows xp 或以上基于x86的操作系统2.4 软件结构设计二维码制作视图二维码解析视图二维码制作模块二维码解析模块结果视图软件分为了2层视图表示层,以及二维码数据处理层。
视图表示层分:二维码制作视图、二维码解析视图以及结果视图。
1、二维码制作视图:该视图提供给用户一个GUI界面,用户通过在界面中输入需要制作成二维码的字符信息。
用户点击制作二维码后,软件通过调用二维码制作模块,来完成二维码的生成。
2、二维码解析视图:该视图提供给用户GUI界面,用户可以通过界面完成对二维码图片的选取,然后软件通过调用二维码解析模块完成对二维码的解析工作。
3、二维码制作模块:该模块通过调用Google库zxing的MultiFormatWriter来实现将用户输入文本制作成符合二维码规则的二进制矩阵,然后通过MatrixToImageWriter 将二进制矩阵输出到生成的二维码图片中。
4、二维码解析模块:改模块通过使用Google库zxing的MultiFormatReader读取用户选择的文件并解析,获取解析得到的二维码图片原文。
然后返回解析结果给结果视图。
5、结果视图:该视图完成对用户处理结果的显示。
3软件相关算法3.1 二维码图片生成算法涉及的二维码信息编码模块本软件直接采用Google给我们提供的一个通用的二维码信息编码库ZXing-1.7.zip,该库给我们提供了各种二维码的生成以及解析方法。
可以根据编码选项对输入的字符串进行QR Code编码,得到编码后的QR符号,具体调用方法如下:public static boolean encodeQRCode(String text, String savePath,int imageWidth, int errorCorrectionLevel) { Charset charset = Charset.forName("UTF-8");CharsetEncoder encoder = charset.newEncoder();byte[] b = null;try {// Convert a string to UTF-8 bytes in a ByteBufferByteBuffer bbuf = encoder.encode(CharBuffer.wrap(text));b = bbuf.array();} catch (CharacterCodingException e) {System.out.println(e.getMessage());}try {String data = new String(b, "UTF-8");BitMatrix matrix = null;int h = imageWidth;int w = imageWidth;Writer writer = new MultiFormatWriter();try {Hashtable<Object, Object> hints =new Hashtable<Object, Object>();// 指定编码格式hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 指定纠错等级hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.forBits(errorCorrectionLevel));// 指定编码格式matrix = writer.encode(data,BarcodeFormat.QR_CODE, w, h, hints);} catch (WriterException e) {System.out.println(e.getMessage());}String ext = savePath.substring(stIndexOf(".")+1);File file = new File(savePath);try {MatrixToImageWriter.writeToFile(matrix, ext, file);return true;} catch (IOException e) {return false;}} catch (UnsupportedEncodingException e) {return false;}}参数说明:text是需要生成二维码的文本字符串,savePath为生成的图片保存的位置。
对字符串“01234567”编码后得到返回值为: “021021111111101101101111111100000101010001000001101110100110101011 10110111010110000101110110111010011000101110110000010011000100000111 11111010101011111110000000011000000000001011011100100010010110001010 11010100101100100101111000111110010110100010010110001010000111111001 01001000000000000111001010000111111110100001101011010000010101111100 01011011101001010010000011011101010100100101101011101010110100101001 00000100101101011011111111101001100100010”然后通过MatrixToImageWriter 的writeToFile方法完成将二进制矩阵数据写入到文件最后生成二维码图片。