APP下载

二维码结构编码及生成技术探讨与实现

2017-06-01赵水平

电脑知识与技术 2017年8期
关键词:几何图形条形码二维码

赵水平

摘要:二维码是移动设备上非常流行的一种编码方式,其主要技术特点是利用一些特定的几何图形,并按照一定规律在二维平面上分布黑白相间的图形以记录数据信息。与传统条形码相比,它存储的信息更为丰富和表示的数据类型也更为多样化。目前二维码已被广泛应用于各种领域,在人们的日常生活中占据重要的位置。本文概述了二维条形码的基本理论和应用技术,并详细介绍了QR码的基本组成结构以及其编码方法。本文基于TAVA语言还具体实现了一个可用的二维码的生成系统。本文的工作对于二维码知识的普及和应用具有良好的推动作用。

关键词:二维码;QR码;编码技术;几何图形;条形码

中图分类号:TP392 文献标识码:A 文章编号:1009-3044(2017)08-0259-03

1概述

在信息技术高速发展的今天,二维码在生活中无处不在,人们可以在书本,移动终端,广告牌等不同媒介随处可见它的身影,用手机一扫就能获取想要的信息,简便快捷,在人们的生活中占据了重要地位。与传统条形码相比,二维码具有编码密度高、存储信息丰富、编码范围广、数据表示类型多样、容错率、纠错能力和抗干扰能力较强等优势。同时,与主流磁卡、射频等识别技术相比,二维码可以脱离具体的载体,通过图片、彩信、邮件或传真等多种媒介,快速传递信息。因此,目前二维码已经在社会的各领域得到广泛接受和应用,尤其在电子票务系统、质量追溯与防伪系统以及网络购物支付等方面,更是发挥巨大的商业潜力。

二维码的技术特点是用特定的几何图形按一定规律在二维平面上分布黑白相间的图形,使用与二进制相对应的几何形体表示文字数值信息。二维码通过图象输入设备或光电扫描设备自动识别,实现信息的自动化处理。主流的二维条形码,从外观表现形式上看,可以分为堆叠式和矩阵式两大类型。堆叠式的主要编码原理是将原有的一维条形码堆积成两行或者多行,其编码、校验、识读和印刷等技术与传统一维条形码兼容。但是预判、解码算法尤其独特的方式。代表性码制包括:Codel6K、Code49、PDF417等。矩阵式又称棋盘式,以计算机图像处理技术和组合编码等原理为基础,在二维平面上通过黑白像素的分布情况来记录不同信息。在矩阵中,黑色像素点代表二进制“1”,白色点代表二进制“0”。像素点的组合分布确定二维码其所代表信息内容。代表性码制有QR Code、DataMatrix等。图1所示,是两种典型的二维码示例。

本文接下来的主要内容安排是,在第二部分,我们将以Qn码为代表,重点介绍其结构和主要编码流程,并基于java技术实现了一个具体的QR码生成系统。最后在论文的第三部分,我们对本文进行总结。

2QR码结构和编码流程

QR Code(Quick Response Code)于1994年由日本Denso-Wave公司研制开发,其符号图形如图2所示。

整个QR码的符号图形结构由编码区域与功能图形两部分组成,分别与图像信息和识别有关。功能图形包括空白区、寻像图形(位置探测图形)、位置探测图形分隔符、校正图形和定位图形五个要素。其中,位置探测图形是重叠的同心正方形,分布在二维码图形区域的左上角、左下角和右上角三个位置,共同构成寻像图形。位置探测图像的深浅色模块的宽度比为1:1:3:1:1。对应的位置探测图形分隔符为浅色模块,宽度为1,将位置探测图形与版本信息和构造信息隔开。定位图形有水平和垂直两个方向的分布,深浅色模块交替间隔并均以深色模块作为起始和结尾。

QR码的编码大体分成7步,分别为数据分析、数据编码、生成纠错码、构造最终信息、构造最终模块、掩模运算和添加版本信息、构造信息。

数据经过首先分析,然后在输入数据字符串前根据具体的编码模式和编码版本选择合适的模式指示符和字符计数指示符。常见的类型如表1所示。

在纠错码生成阶段,QR码的纠错码采用Reed-Solomon er-ror correction(里德-所罗门纠错算法)实现。具体步骤是:(1)根据版本号与纠错等级,对数据码字进行分块;(2)生成数据码字多项式。多项式的最高项系数为第1位数据码字,多项式的最低项系数为最后1位数据码字;(3)按照版本號和纠错等级生成对应的纠错码多项式g(x)。使用纠错码多项式g(x)除以数据码字多项式。所得剩余多项式最高项系数作为该块数据码字的第一位纠错码,最低项系数作为最后一位纠错码字。原始数据码和生成的纠错码,按照一定的规则进行排列。具体排列过程如下:假设数据码长为m块,每块n个码字,生成的纠错码字,每块有k个码字。对分块后的数据码字和纠错码字,按照数据块1的数据码字1、数据块2的数据码字4……数据块m-1的数据码字n、数据块m的数据码字n、纠错块1的纠错码字1、纠错块2的纠错码字1……纠错块m-1的纠错码字k、纠错块m的纠错码字k的规则进行排序,形成最后信息流。如果码字的数量小于符号的容量,则在码字后补零填满符号。每8位码字序列以2个模块宽的纵列从符号的右下角开始,按照由左到右,由下往上或由上往下的S型排列。为了提高二维码的可读性,在编码过程采用了掩模操作。其方式是尽量均衡地安排深浅色模块,同时避免与定位图像、寻像图像等图形结构相同的图形出现。具体掩模运算过程包括:(1)不对功能图形进行掩模运算。(2)对编码区域的模块图形(格式信息和版本信息除外j进行异或运算,即将模块图形依次地放在每个掩模图形上,并将对应于掩模图形模块颜色取反;(3)评估结果图形的不符合要求部分;(4)选取得分最低的图形作为最终结果。

本文选择基于Java语言来实现二维码的生成。所需搭建的实验环境包括:(1)操作系统:Windows XP或Win7;(2)JDK:jdkl.7.0(JavaDevelopment Kit);(3)Eclipse:eclipse4.2.2。

第一步:jdk的安装:双击下载好的jdk文件中的.exe文件,路径自主选择,安装好后,配置环境变量path及elasspath,选择计算机->属性->高级系统设置->高级->环境变量:

第二步:测试jdk,点击开始->运行输入cmd运javac显示文件路径或者java-version显示运行jdk的版本,证明测试成功,jdk安装成功。

部分二维码生成代码如下图所示。本文纠错级别为M,编码模式为字符编码,QR码版本信息为7。

本系统目前可以实现输入诸如网址、字符等信息,并生成一张二维码。手机扫描可以即时获得该信息。系统界面如图7所示,随便输入网址,如www.baidu.com,点击生成,系统便会生成一张名为WWW.baidu.com的jpg格式的二维码,扫一下出现网址并能进入网页。

3结论

本文主要介绍了二维码的基本知识,并分析了QR码的基本结构和编码特点,数据编码技术用于提高二维码及数据的压缩率和编码效率,纠错编码技术提高了二维码的容错能力,掩模提高了二维码的可读性以及识别效率。本文结合JAVA语言,在系统实现中完成了二维码生成的过程。所实现的简易演示系统,能完成一定准确度的二维码生成任务。

猜你喜欢

几何图形条形码二维码
创意条形码
二维码
从条形码到二维码
从条形码到二维码
条形码大变身
让严肃的二维码呆萌起来
浅谈小学数学几何图形概念的教学策略
探讨小学数学几何图形概念的教学策略
手工制作在小学数学几何教学中的应用
数形结合思想在解题中的应用