浅析IM即时通讯开发之扫码登录二维码

二维码技术使用起来很简单,本系列的前三篇文章也专门针对IM扫码登录这个功能做了详细的分享,但本着学习技术不留死角的习惯,我认为有必要单独学习一下到底什么是二维码(说不定哪天被个刚入行的程序员轻轻一句“哥,啥是2维码”,给问的懵逼了,那时就不仅“头凉”,还会“心梗”...),这也是专门整理本文的目的所在。



说明:准确地说,我们平时见的最多的二维码其实是QR码,也就是目前我国应用最为广泛的一种二维码。为了表述简单,如无特指,本文中所述二维码皆指QR码。

二维码的源起

准确地说,我们平时见的最多的二维码其实是QR码,也就是目前我国应用最为广泛的一种二维码。为了表述简单,如无特指,本文中所述二维码皆指QR码。

时代背景

上个世纪60年代之后,日本经济迎来的高速增长期,种类繁多的商品的超市开始在城市中出现。

当时超市使用的现金出纳机要靠手动输入商品价格,因此负责现金出纳的人常常会因手腕的麻木和“腱鞘炎”而苦恼。

“能否减轻超市收款员的负担呢?”

条形码的出现解决了这一苦恼。由于POS系统的成功开发,仅通过光感读取条形码,价格就会自动显示在出纳机上,同时读取的商品信息还能传送到计算机上。

如此一来,条形码得以普及,但新的课题又随之而来。问题在于条形码的容量有限,英文数字最多只能容纳20个字。

“编码本身要是能够含有更多的信息就好了”、“希望具有汉字和假名的处理功能”。

“定位图案”为何是回字型?

定位图案为何要使用那种回字型的呢?

腾弘原解释说:“因为这种图形在票据等当中出现频率最小”。

也就是说:如果附近有同样的图形,读取机就会将其误认为是编码,为了防止这种误读,定位图案必须是唯一的图形。

经过全面考虑:腾弘原等人决定将印刷在广告单、杂志、纸板等处的绘图和文字全部变成黑白两色,对其面积比率进行彻底的调查。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

研发小组日以继夜地对无数的印刷品进行调查的结果,终于查明了印刷品中“最不常用的比率”,即1︰1︰3︰1︰1。

这样:便确定了定位图案黑白部分的宽幅比率。所形成的结构是,扫描线可以从360度方向扫描,无论从哪个方向扫描,一旦扫到其独特的比率,便可计算出编码的位置。

二维码的优点

回到技术本身,用现代的视角先来总结一下二维码到底有什么优点。

二维码出现之前,在需要使用类似编码的场景时,采用的都是一维码(条形码)。

但是条形码承载的信息太少,只能用于一些很简单的场景,因此条形码除了用于商品等信息,并没有广泛流行。

总结一下,二维码具有以下优点:

    1)信息容量大:可容纳多达 1850 个大写字母或 2710 个数字或 1108 个字节,或 500 多个汉字,比普通条码信息容量约高几十倍;
    2)编码范围广:该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;
    3)容错能力强:具有纠错功能,这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达 50% 仍可恢复信息;
    4)译码可靠性:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一;
    5)可引入加密:保密性、防伪性好;
    6)使用成本低:易制作,持久耐用。

二维码有 4 个可变项,其中主要的 2 个为版本和容错率。

1)版本(TypeNumber):
一共有 40 个尺寸,对应 40 个版本;Version1是 21*21 的矩形,之后每增加一个版本,就增加4的尺寸,即(v-1)4+21,最高是Version40,177177 的正方形。

2)容错率(ErrorCorrectionLevel):
二维码容错率即是指二维码图标被遮挡多少后,仍可以被扫描出来的能力。容错率越高,则二维码图片能被遮挡的部分越多。

二难码的设计原理

日常我们看到的二维码就是一张由黑白色块混合在一起的一张图片,我们肯定也知道这些黑白色块就是内容的某种编码,但其实除了内容外,二维码还有许多其他辅助扫码识别的信息。

功能区

功能区的主要内容是:

    1)位置探测图形:位于左上、左下、右上的三个矩形,可以说是二维码最重要的组成部分;
    2)位置探测图形分隔符:位置探测图形周围的白边,用于分割位置探测图形和数据。
    3)定位图形:三个位置探测图形之间的两根“线”,用于确定二维码符号中模块的坐标(相当于坐标轴);
    4)校正图形:用于校正定位(只有版本2以上有),版本越高个数越多,以校正可能发生的定位偏移。


位置探测图形的作用主要是:

    1)确定二维码的放置方向:不管顺着扫倒着扫,都可以准确找到第一个编码字符的位置(左上矩形的右边);如果任一矩形被遮挡,扫描设备将无法定位;
    2)确定编码字符的边界:确定编码字符的上下左右边界,不被周围其他信息干扰。

数据区

数据区的主要内容是:

    1)格式信息:存放包括纠错码类型、掩码类型等信息;
    2)数据和纠错码字:最主要的部分,用于存放数据和纠错信息。

在所有数据都完成放置之后,还有一步操作:添加掩码。

掩码主要是为了避免,如果出现大面积的空白或黑块,导致我们扫描识别的困难。

数据经过掩码后,基本不会再出现大面积的黑块和白块,利于扫描。

注:掩码只会与数据区进行 XOR,不会影响功能区。

猜你喜欢

转载自blog.csdn.net/wecloud1314/article/details/125872819