快捷搜索: 王者荣耀 脱发

浅谈二维码的生成和识别原理

前言

不知不觉中,我们的生活到处充满了二维码。登录账户需要二维码;加好友需要二维码;共享单车需要二维码;商品包装上也有二维码;甚至连楼下卖水果的阿姨手里都拿张二维码收款。那么,有没有想过这个二维码到底是什么东西呢?那么这个二维码的图案会不会多到不小心重合了呢?

条形码

在二维码出现之前,大行其道的还得是条形码,比如超市收银员扫的那个黑白条就是条形码。条形码是一维数据,当机器在水平方向上扫码这些粗细不同的黑白条时能够获取到其中的数据信息。相比于只在一个维度上携带信息的条形码,二维码在水平、垂直两个维度上都携带了数据。

说白了,条形码和二维码都是对一些数字、字母、字符等人们共识的常规文字,转换成另外一种相对应的符号(黑白条、黑白方块),然后又让这些符号能够被机器识别和翻译成为常规文字。

静态二维码

二维码其实有点类似于我们学生时代考试中用到的答题卡。我们在考试中将需要选择的正确答案用2B铅笔✏️涂黑后,这个信息就可以被机器扫描出来。机器批阅的效率非常高,一秒钟就可以知道你考了多少分。

当然,二维码和答题卡的原理还不太一样。二维码的生成原理并不难理解,其实就是把数据信息转换成对应的黑白方块,最后拼接成了一个日常可见的正方形图案。也就意味着,如果改变了数据信息,就会直接改变二维码的图案,这也是静态码的重要特点。

二进制生成图形码

说了半天,还是没用说到关键点,就是怎么就把数据信息转换成对应的条形码和二维码。

这里先介绍一下划时代意义的“二进制”。二进制由0和1组成,二进制的过程也被称为编码过程,它可以将数字、字母等字符转换成由0和1组成的数字集合。

下面是字符转二进制的转换表格,在线二进制转换:http://www.txttool.com/wenben_strbinary.asp。

字符 二进制 0 00110000 1 00110001 2 00110010 3 00110011 10 00110001 00110000 11 00110001 00110001 a 01100001 b 01100010 c 01100011 ab 01100001 01100010 . 00101110

比如,百度的网址 “www.baidu.com ” 转换成二进制后如下所示:

01110111011101110111011100101110011000100110000101101001011001000111010100101110011000110110111101101101

如果,此时“0”对应白色方块、“1”对应黑色方块的话,就会出现许多大大小小黑白方块。最后把这些方块填入一个大的正方形内,就形成了二维码图案了。

二维码的定位 

不知道,大家有没有好奇,为什么所有的二维码的边角都有三个大的黑色方块。如下图所示:

其实,这三个大小相同的黑色方块是为了给二维做定位的。定位?啥意思?很简单啊,就是你的二维可能斜了、歪了、倒立了,相机就可以通过这三个黑方块点判断二维的正确存放位置了啊!💡叮咚!这下大家都明白了吧。

经验分享 程序员 微信小程序 职场和发展