二维码基本原理
二维码技术始于20世纪80年代末,全球现有250多种二维码,其中常见技术标准有PDF417,QRCode,Code49Code16K,CodeOne等20余种。我们日常扫码以QR码居多。
从1997年到2012年,我国陆续发布了5个二维码国家标准:PDF417,QRCode(快速响应码),汉信码,GM码(网格矩阵码)和CM码(紧密矩阵码)。其中QRCode因为具有识读速度快、信息容量大、占用空间小、保密性强、可靠性高的优势,是目前使用最为广泛的一种二维码。QRCode 呈正方形,只有两种颜色,在4个角落的其中3个,印有像“回”字的的小正方图案。QR码是属于开放式的标准。
二维码的工作原理
二维码内的图案代表二进制代码,经过解释后可显示代码存储的数据。
二维码阅读器根据二维码外侧的三个较大方块来识别标准二维码。当识别出这三个形状后,就知道整个方块内包含的内容是一个二维码。
二维码阅读器随后将整个二维码分解到网格进行分析。它查看每个网格方块,并根据方块是黑色还是白色来为其分配一个值。然后将网格方块组合在一起,创建更大的图案。
二维码由哪些部分组成
①.静态区域 (Quiet zone)
这是二维码外侧的空白边框。如果没有这个边框,二维码阅读器会因为外界因素的干扰而无法确定二维码包含和不包含的内容。
②.寻像图案 (Finder pattern)
二维码在左下角、左上角和右上角包含三个黑色方块。这些方块告诉二维码阅读器它看到的是一个二维码,及二维码的外部边框在哪里。
③.校准图案 (Alignment pattern)
这是二维码右下角附近的某个位置包含的另一个较小方块,用于确保二维码在倾斜或有角度的情况下仍然可以阅读。
④.定位图案 (Timing pattern)
这是一条 L 形线,在寻像图案的三个方块之间。定位图案帮助阅读器识别整个二维码中的各个方块,使损坏的二维码仍有可能被阅读。
⑤.版本信息 (Version information)
这是二维码右上角寻像图案附近的一小块信息区域。它标识了正在阅读的二维码的版本(请参阅“二维码有哪四个版本?”)。
⑥.数据单元 (Data cell)
二维码的其余部分传达实际信息,即所包含的 URL、电话号码或消息。
二维码的特点
①.高密度编码,信息容量大:可容纳1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。
②.编码范围广:可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用二维码表示出来;可以表示多种语言文字;可表示图像数据。
③.容错能力强,具有纠错功能:这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确识读,损毁面积达30%仍可恢复信息。
④.译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。
⑤.可引入加密措施:保密性、防伪性好。
⑥.成本低,易制作,持久耐用。
为什么要统一标准
①.如果二维码的数据格式不统一、印制精度、符号大小不符合要求,就容易导致信息乱码、无法识读。
②.如果特定二维码只能在特定客户端上扫描,导致用户扫描反复受挫,用户体验不好。
统一的二维码国家标准是解决这方面问题的最佳手段,以实现最佳的兼容性和用户体验。而不兼容国家标准的客户端由于用户体验差,自然被用户抛弃。
常用二维码对比
QR二维码读取
QR码从360°任一方向均可快速读取。其奥秘就在于QR码中的3处定位图案,可以帮助QR码不受背景样式的影响,实现快速稳定的读取。
QR码的基本结构
格式信息:表示改二维码的纠错级别,分为L、M、Q、H;
校正图形:规格确定,校正图形的数量和位置也就确定了;
数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)
位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,每个QR码位置都是固定存在的,只是大小有所差异;
版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块。
QR码存储容量
格式 | 容量 |
---|---|
数字 | 最多7089字符 |
字母 | 最多4296字符 |
二进制数(8 bit) | 最多2953字节 |
日文汉字/片假名 | 最多1817字符(采用Shift JIS) |
中文汉字 | 最多984字符(采用UTF-8) |
QR码纠错能力
即使编码变脏或破损,也可自动恢复数据。这一“纠错能力”具备4个级别,用户可根据使用环境选择相应的级别。调高级别,纠错能力也相应提高,但由于数据量会随之增加,编码尺寸也也会变大。
纠错等级 | 纠错水平 |
---|---|
L | 7%字码修正 |
M | 15%字码修正 |
Q | 25%字码修正 |
H | 30%字码修正 |
下图所示:相同内容的二维码,纠错等级不一样,矩阵的密度也不一样,容错率越高,密度越大
不是所有位置都可以缺损,像三个角上的回字方框,直接影响初始定位,不能缺失。中间零散的部 分是内容编码,可以容忍缺损。
计算机的世界都是0和1,二维码再一次说明了这个问题
普通二维码存在的问题
普通二维码只是对文字、网址、电话等信息进行编码,不支持图片、音频、视频等内容,且生成二维码后内容无法改变,在信息内容较多时生成的二维码图案复杂,不容易识别和打印,正是由于存在这些特性故称之为静态二维码。静态二维码的好处就是无需联网也能识别,但是有些时候在线下场景经常需要打印二维码出来让用户去扫码,或者在一些运营场景下需要对用户的扫码情况进行数据统计和分析,再使用普通的二维码就无法提供这些功能了,这时候就要使用动态二维码了
动态二维码(活码)及其原理
动态二维码也称之为活码,内容可变但是二维码不变。支持随时修改二维码的内容且二维码图案不变,可跟踪扫描统计数据,支持存储大量文字、图片、文件、音视、视频等内容,同时生成的图案简单易扫。
实际上二维码是按照指定的规则编码后的一串字符串,通常情况下是一个网址,在二维码出现之前,打开浏览器输入网址即可访问相应的网站,而有了二维码之后,我们扫描二维码,首先会做一次从二维码到文本的解析、转换,然后根据解析出来的文本结果判断是否是链接,是则跳转到这个链接,尽管我们操作方式改变了,但其原理是相同的。
二维码对外暴露的是同一个网址,服务端只需要对这个网址做个二次跳转就行,这个对外暴露固定不变的网址也称为“活址”。
静态二维码和动态二维码(活码)的区别
比较项 | 普通二维码 | 动态二维码(活码) |
---|---|---|
内容修改 | 不支持 | 可以随时修改 |
内容类型 | 支持文字、网址、电话等 | 支持文字、图片、文件、音视、视频等内容 |
二维码图案 | 内容越多越复杂 | 活码图案简单 |
数据统计 | 不支持 | 支持 |
样式排版 | 不支持 | 支持 |
汉信码 -- 中国自主开发的二维码标准
汉信码是一种全新的二维矩阵码,由中国物品编码中心牵头组织相关单位合作开发,完全具有自主知识产权,支持任意语言编码、汉字信息编码能力超强、极强抗污损、抗畸变识读能力、识读速度快、信息密度高、信息容量大、纠错能力强等突出特点,达到国际领先水平。和国际上其他二维条码相比,更适合汉字信息的表示,而且可以容纳更多的信息。
物品编码中心于2003年申请了国家"十五"重大科技专项课题,并与我国多家自动识别技术企业合作,开展汉信码技术研究工作。2005年12月26日该课题顺利通过国家标准委组织的项目验收。2007年8月23日《汉信码》国家标准正式颁布,并于2008年2月1日正式实施。
汉信码生成:tuzim.net/barcode/han…
汉信码识别:https://tuzim.net/hxdecode
它的主要技术特色是:
①.具有高度的汉字表示能力和汉字压缩效率
汉信码支持GB18030中规定的160万个汉字信息字符,并且采用12比特的压缩比率,每个符号可表示12~2174个汉字字符。
②.信息容量大
在打印精度支持的情况下,每平方英寸最多可表示7829个数字字符, 2174个汉字字符, 4350个英文字母。
③.编码范围广
汉信码可以将照片、指纹、掌纹、签字、声音、文字等凡可数字化的信息进行编码。
④.支持加密技术
汉信码是第一种在码制中预留加密接口的条码,它可以与各种加密算法和密码协议进行集成,因此具有极强的保密防伪性能。
⑤.抗污损和畸变能力强
汉信码具有很强的抗污损和畸变能力,可以被附着在常用的平面或桶装物品上,并且可以在缺失两个定位标的情况下进行识读。
⑥.修正错误能力强
汉信码采用世界先进的数学纠错理论,采用太空信息传输中常采用的Reed-Solomon纠错算法,使得汉信码的纠错能力可以达到30%。
⑦.可供用户选择的纠错能力
汉信码提供四种纠错等级,用户可以根据自己的需要在8%、15%、23%和30%各种纠错等级上进行选择,从而具有高度的适应能力。
⑧.容易制作且成本低
利用现有的点阵、激光、喷墨、热敏/热转印、制卡机等打印技术,即可在纸张、卡片、PVC、甚至金属表面上印出汉信码。由此所增加的费用仅是油墨的成本,可以真正称得上是一种“零成本”技术。
⑨.条码符号的形状可变
汉信码支持84个版本,可以由用户自主进行选择,最小码仅有指甲大小。
⑩.外形美观
汉信码在设计之初就考虑到人的视觉接受能力,所以较之现有国际上的二维条码技术,汉信码在视觉感官上具有突出的特点。
汉信码实现了我国二维码底层技术的后来居上,在我国多个领域行业实现规模化应用,为我国应用二维码技术提供了可靠核心技术支撑。
********** 延伸 **********
一维码 (条形码)
一维码也叫条形码,它是由不同宽度的黑条和白条按照一定的顺序排列组成的平行线图案,它的宽度记录着数据信息,长度没有记录信息,条形码常用于标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等信息,大部分食品包装袋背后都会印有条形码。
全球的条形码标准都是由一个叫GS1的非营利性组织管理和维护的,通常情况下条形码由 95 条红或黑色的平行竖线组成,前三条是由黑-白-黑 组成,中间的五条由白-黑-白-黑-白组成,最后的三条和前三条一样也是由黑-白-黑组成,这样就把一个条形码分为左、右两个部分。剩下的 84 (95-3-5-3=84) 条按每 7 条一组分为 12 组,每组对应着一个数字,不同的数字的具体表示因编码方式而有所不同,不过都遵循着一个规律:右侧部分每一组的白色竖线条数都是奇数个。这样不管你是正着扫描还是反着扫描都是可以识别的。
中国使用的条形码大部分都是 EAN-13 格式的,条形码数字编码的含义从左至右分别是前三位标识来源 国家编码 ,比如中国为:690–699,后面的 4 ~ 8 位数字代表的是厂商公司代码,但是位数不是固定的,紧接着后面 的 9~12 位是商品编码,第 13 位是校验码,这就意味着公司编码越短,剩余可用于商品编码的位数也越多,可表示的商品也就越多,当然公司代码出售价格也相应更昂贵,另外用在商品上的 EAN-13 条码是要到 国家物品编码中心去申请的。
来源:juejin.cn/post/7258201505337131065