二维码技术使用起来很简单,本系列的前三篇文章也专门针对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,不会影响功能区。

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

  1. 钉钉扫码登录二维码错乱

    今天有一个小伙伴,打开钉钉扫码登录页面,二维码是裂开的. 调查发现其他浏览器都可以,只有Chrome浏览器不行. 初步怀疑是浏览器内核原因. 解决方案: 兼容IE内核

  2. 微信扫一扫 扫普通链接二维码打开微信小程序

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 扫普通链接二维码打开小程序 为了方便小程序开发者更便捷地推广小程序,兼容线下已有的二维码,微信公众平台开放扫描普 ...

  3. 【Exception】微信小程序,配置普通链接二维码规则 文件校验失败问题 校验文件检查失败 扫普通链接二维码打开小程序

    [Exception]微信小程序,配置普通链接二维码规则 文件校验失败问题 校验文件检查失败 扫普通链接二维码打开小程序 一.问题描述 1.公司业务有个需求,扫描普通的二维码,跳转到小程序的某个页面, ...

  4. 【vue+pc端】实现微信扫码登录pc端,后端通过微信开发平台,前端生成二维码(仅供参考)

    这两周的需求是通过微信扫码登录pc端,刚定下需求原型图还没出来前,后端特意发了微信开发平台的链接给我,关于如何生成二维码的文档,以及扫码跳转后如何传code给他. 请戳这里准备工作|微信开放文档 我最 ...

  5. 钉钉开发平台 —H5微应用-- 扫条形码、二维码 api 示例

    扫条形码.二维码 使用说明 客户端 Android iOS PC 支持说明 支持 支持 不支持 dd.biz.util.scan({type: String , // type 为 all.qrCod ...

  6. 扫码普通二维码跳转微信小程序指定页面(体验服和开发服跳转链接不能动态传参)

    好久不见,时隔多年我又来记录问题来了,记录这次问题的主要原因是减少你我去搜索资源的时间,下面开始讲讲我越到的问题.(下面说的是针对小程序体验版或者开发版哈,正式环境不存在这个问题) 需求:pc端扫码登 ...

  7. 『小程序开发』关于微信小程序扫普通链接二维码打开小程序的具体配置流程...

    前言: 对于扫普通链接二维码打开小程序的功能详解,官方api已经可以说是接近手把手的教学,咱们这里不做累述,直接上图走起...官方接入指南 功能介绍 扫二维码登录小程序...^_^ 限制 1.对于普通 ...

  8. 微信公众平台开发(三)——微信二维码生成扫码关注

    微信二维码生成是指后端发送请求向微信服务器申请公众号的二维码,用户如果未关注,进行扫描改二维码后即跳转道公众号的关注页面:如果已经关注,扫描二维码后直接进入该微信公众号.当用户扫码时,微信服务器会向后 ...

  9. 【微信开发6】专属推广二维码 java+SpringBoot

    文章目录 前言 营 获取二维码 推广功能代码实现 前言 本系列教程采用java springboot框架开发,需要具备一定的基础知识.纯干货代码,自己遇到的一些问题and解决方案. 营 ​ 大家都知道 ...

最新文章

  1. java信息格式化,Java如何格式化包含时间信息的消息?
  2. Unity Pro 2020中文版
  3. 找不到网卡eth0的解决方法
  4. 三、css 和 js 的装载与执行
  5. .Net使用RabbitMQ详解
  6. 颜色分类—leetcode75
  7. JAVA程序中 + 号的使用
  8. ecos(redboot)移植剖析
  9. c语言实现容器,C语言三种容器:list vector和deque的区别
  10. 2018中国国际大数据大会专属报名通道(免费)开通啦!
  11. windows下mysql主从同步_详解windows下mysql的主从同步
  12. 搜索引擎的那些事(网页下载)
  13. 小米路由 php 服务器,小米路由器在后台不停访问小米服务器发送设备信息,继续分析发现不止如此,还......
  14. 有没有办法在Android上运行Python?
  15. git最简单直接粗爆与github教程
  16. 【矩阵论 图论】期末考试复习思维导图
  17. L13过拟合欠拟合及其解决方案
  18. Spark SQL电影分析案例
  19. 静安闸北六一计算机竞赛,【和美•喜报】新闵小学学生在2017“静安闸北二中心杯”上海市以及松江区“六·一”小学生计算机创新比赛活动中荣获佳绩!...
  20. SPI DMA 通信配置

热门文章

  1. Visual Studio Code安装(2022年最新版本)
  2. 【python线程与GIL 锁】
  3. “聆听”升级,阿里云智能喜迎首席聆听官 1
  4. 最好的vim配置文件 不需要下载插件(转)
  5. 【嵌入式模块】蓝牙模块使用总结
  6. 触摸菜单:纸质菜单终结者
  7. Spring boot项目上传Linux服务器后 上传图片后,图片路径报404,图片路径映射问题
  8. 2K/XP/2003语言栏问题
  9. Windows7上优秀的解码包 Win7codecs 2.0.5 Final
  10. MOS与IC的选型公司