乐趣区

关于二维码:聊聊二维码

一维码(条形码)

在介绍二维码之前,先来看看它的“大哥”一维码,一维码也叫条形码(如同在日常生活中都是叫这个),它是由不同宽度的黑条和白条依照肯定的顺序排列组成的平行线图案,它的宽度记录着数据信息,长度没有记录信息,条形码罕用于标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等信息,比方大部分食品包装袋背地都会印有条形码。

一维码的编码规定

寰球的条形码规范都是由一个叫 GS1 的非营利性组织治理和保护的,通常状况下条形码由 95 条红或彩色的平行竖线组成,前三条是由 黑 - 白 - 黑 组成,两头的五条由 白 - 黑 - 白 - 黑 - 白 组成,最初的三条和前三条一样也是由 黑 - 白 - 黑 组成,这样就把一个条形码分为左、右两个局部。剩下的 84 (95-3-5-3=84) 条按每 7 条一组分为 12 组,每组对应着一个数字,不同的数字的具体示意因编码方式而有所不同,不过都遵循着一个法则:右侧局部每一组的红色竖线条数都是奇数个。这样不论你是正着扫描还是反着扫描都是能够辨认的。

中国应用的条形码大部分都是 EAN-13 格局的,条形码数字编码的含意从左至右别离是前三位标识起源 国家编码,比方中国为:690–699,前面的 4 ~ 8 位数字代表的是厂商公司代码,然而位数不是固定的,紧接着前面 的 9~12 位是商品编码,第 13 位是校验码,这就意味着公司编码越短,残余可用于商品编码的位数也越多,可示意的商品也就越多,当然公司代码发售价格也相应更低廉,另外用在商品上的 EAN-13 条码是要到 国家物品编码核心 去申请的。

二维码

二维码 是在一维码的根底之上扩大进去的,二维码有不同的品种,大体上能够分为这两种 ① 重叠式 / 行排式二维条码 ② 矩阵式二维码,其中矩阵式二维码最为风行(下文的二维码指矩阵式二维码),它与一维码所不同的是它的宽度和长度均有记录数据信息,存储的数据量更大,除此之外还减少了“定位点”和“容错机制”。通过“定位点”使读码机正确辨认进行解读,所以二维码不论是从何种方向读取都是能够被辨认的。

“容错机制”能够在没有辨认到全副条码时也能正确推断和还原出原始的条码信息,维码的纠错级别,依照不同的纠错率(全副码字与能够纠错的码字的比率)分为 L (约 7%)、M (约 15%)、Q (约 25%)、H (约 30%) 四个不同的级别。比方上面的「mghio」公众号二维码只管两头有公众号头像,然而仍然能够正确辨认进去就是这个“容错机制”的性能。不论是条形码(一维码)还是二维码其本质上都是对信息的编码,区别只是对信息的编码方式有所不同。

二维码的构造

二维码的版本从 1 ~ 40 共 40 个不同的版本,每个版本的根本构造都是雷同的,所不同的是每个版本的码元(形成二维码的方形黑白点)数量不同,从版本 1 (21 × 21 码元) 至版本 40 (177 × 177 码元) 顺次递增。

二维码能够分为这几不同的性能区域,别离是 版本信息 格局信息 数据及容错 定位标记 校对标记 等次要区域,其中定位标识用来对二维码进行定位,版本信息示意二维码的版本,有 40 种不同版本的二维码,从版本 1 到版本 40,每一版本比前一个版本每边减少 4 个码元,数据及容错用于理论保留的二维码数据信息和用于修改二维码损坏带来的谬误的纠错码字,二维码的编码规定比较复杂,感兴趣的敌人能够去看看它的编码标准。

一般二维码存在的问题

以上介绍的这种一般二维码只是对文字、网址、电话等信息进行编码,不反对图片、音频、视频等内容,且生成二维码后内容无奈扭转,在信息内容较多时生成的二维码图案简单,不容易辨认和打印,正是因为存在这些个性故称之为 动态二维码 。动态二维码的益处就是无需联网也能辨认,然而有些时候在线下场景常常须要打印二维码进去让用户去扫码,或者在一些经营场景下须要对用户的扫码状况进行数据统计和剖析,再应用一般的二维码就无奈提供这些性能了,这时候就要应用 动静二维码 了。

动静二维码(活码)及其原理

动静二维码也称之为 活码,要害就在于“活”,“活”就是内容可变,然而二维码不变。活码的长处其实就是动态二维码的毛病,反对随时批改二维码的内容且二维码图案不变,可跟踪扫描统计数据,反对存储大量文字、图片、文件、音视、视频等内容,同时生成的图案简略易扫。

实际上二维码是依照指定的规定编码后的一串字符串,通常大部分状况下是一个网址,在二维码呈现之前,咱们拜访一个网址是关上浏览器输出网址后按下回车即可拜访相应的网站,而有了二维码之后,咱们应用软件扫描二维码,软件首先会做一次从二维码到文本的解析、转换,而后依据解析进去的文本后果判断是否是链接,是则跳转到这个链接,只管对咱们而言操作形式扭转了,但其原理是雷同的。

既然二维码背地是网址,要解决动态二维码生成后内容无奈批改的问题,是不是只有把网址做成“活的”就行了,即可操控内容的链接,对外裸露的仍然还是同一个网址,服务端只须要对这个网址做个二次跳转就行,实际上“活码”就是这么干的,这个对外裸露固定不变的网址也称为“活址”。此时脑海里浮现着计算机科学界一句驰名的话:

计算机科学的任何一个问题,都能够通过减少一个中间层来解决。

下面的这个“活址”就是一个“中间层”的角色,屏蔽和隔离了二维码内容的变动,对外始终都只是裸露一个固定的网址。

动态二维码和动静二维码(活码)的区别

比拟项 一般二维码 动静二维码(活码)
内容批改 不反对 能够随时批改
内容类型 反对文字、网址、电话等 反对文字、图片、文件、音视、视频等内容
二维码图案 内容越多越简单 活码图案简略
数据统计 不反对 反对
款式排版 不反对 反对

总结

本文次要对 条形码 动态二维码 动静二维码 的一些基本概念做了简略的介绍,想要深刻理解二维码的实现细节和原理的敌人能够看看耗子叔的这篇文章 二维码的生成细节和原理 或者到 官网 查看相干文档。尽管当初绝大部分人对于二维码都十分相熟,简直每天都会进行着扫码操作,不过在人们的大脑中仍然有一个“积重难返”的认知,认为一个二维码扫描之后只会呈现一种固定的后果,在接触 活码 这个概念之前俺也是。你晓得的越多,不晓得的也越多。


参考资料

  • 二维码的生成细节和原理
  • QR code.com
退出移动版