QR二维码的生成与识别原理
一、简介
二维码(2dime
sio
albarcode),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。二维码的种类包括:QRCodeDataMatrixMaxiCodeAztecVericodePDF417UltracodeCode49Code16K等。其中QRCode是被广泛使用的二维码,QR全称QuickRespo
se,与其他编码方式相比,QR二维码具有存储容量大、编码速度快的特点,并且它也能表示更多的数据类型:比如:字符,数字,日文,中文等等。随着近几年智能手机的迅猛发展,QR二维码得到了广泛的应用。
关于QR二维码的标准,可参见标准文档(QRCodeSpec):httpraide
ii
etfilesdatasheetsmiscqr_codepdf
二、应用现状
随着智能机的普及和手机摄像头成像能力的提升,为了提高向机器内输入信息的速度,QR二维码得到迅猛发展,在许多行业中得到应用。
在一维码时代,“扫码”主要应用在超市或图书馆等场所,以获取商品价格或图书分类等有限的特定信息。二维码可以存储大容量数据,给人们的生活带来巨大方便。
从开始的扫描二维码提取文字或网址,到后来“扫一扫”添加好友、关注个人或公司微信或微博,再到扫码支付,二维码的应用已经非常普遍。
三、基础知识
QR码可分为不同的尺寸,或者叫版本Versio
。Versio
1是21x21的矩阵,Versio
2是25x25的矩阵,Versio
3是29的尺寸,每增加一个versio
,就会增加4的尺寸,公式是:V1421(V是版本号)最高Versio
40,401421177,所以最高是177x177的正方形。
样例如下:
f定位图案
Positio
Detectio
Patter
是定位图案,用于标记二维码的矩形大小。这三个定位图案有白边叫SeparatorsforPostio
Detectio
Patter
s。之所以三个而不是四个意思就是三个就可以标识一个矩形了。
Timi
gPatter
s也是用于定位的。原因是二维码有40种尺寸,尺寸过大了后需要有根标准线,不然扫描的时候可能会扫歪了。
Alig
me
tPatter
s只有Versio
2以上(包括Versio
2)的二维码需要这个东东,同样是为了定位用的。
功能性数据
FormatI
formatio
存在于所有的尺寸中,用于存放一些格式化数据的。Versio
I
formatio
在Versio
7以上,需要预留两块3x6的区域存放一些版本信息。
数据码和纠错码
除了上述的那些地方,剩下的地方存放DataCode数据码和ErrorCorrectio
Code纠错码。
f四、数据编码
QR码支持如下的编码:Numericmode:数字编码,从0到9。如果需要编码的数字的个数不是3的倍数,那么,最后剩下的1或2位数会被转成4或7bits,则其它的每3位数字r