二维码总结

二维码的总结


立刻又要准备面试了,想起本身两年前应聘锤子科技的时候,和人家聊项目的时候被人家一聊就死。此情此景依然历历在目,因而打算沉下心来看看简单的二维码,一看发现这里面的知识点还真很多,今天就来总结一下其中的知识点。其实主要分为两类:html

  • 二维码生成原理
  • 二维码解析流程分析
  • 二维码功能分析

1、二维码生成原理

二维码的生成原理主要涉及如下几个概念:面试

  1. 二维码的定位图案
  • Position Detection Pattern 标记二维码矩形的大小,只有三个,由于三个点肯定一个矩形
  • Timing Patterns 定位矩形位置的基准线,根据 Position Detection Pattern 三个点获得的两条基准线
  • Alignment Patterns 定位须要的小矩形,只有二维码版本在2以上才能使用
  1. 二维码功能性数据
  • Error Correction Level 纠错级别
  • Masking 操做模式(有八种操做模式)
  • 纠错码 经过BCH Code 计算得来 上面三个数据最终还须要与101010000010010作XOR操做。这样就保证不会由于咱们选用了00的纠错级别和000的Mask,从而形成所有为白色,这会增长咱们的扫描器的图像识别的困难。
  • Version Information 在 >= Version 7以上,须要预留两块3 x 6的区域存放一些版本信息。
  1. 数据码
  • Numeric mode 数字编码,从0到9。
  • Alphanumeric mode 字符编码。包括 0-9,大写的A到Z(没有小写),以及符号$ % * + – . / : 包括空格。
  • Byte mode, 字节编码,能够是0-255的ISO-8859-1字符。
  • Kanji mode 这是日文编码,也是双字节编码。一样,也能够用于中文编码。
  • Extended Channel Interpretation (ECI) mode 主要用于特殊的字符集。
  • Structured Append mode 用于混合编码,也就是说,这个二维码中包含了多种编码格式。
  • FNC1 mode 这种编码方式主要是给一些特殊的工业或行业用的。好比GS1条形码之类的。
  • 结束符 占位
  • 补齐符 占位
  1. 纠错码 Error Correction Code Level,二维码中有四种级别的纠错,这就是为何二维码有残缺还能扫出来,也就是为何有人在二维码的中心位置加入图标。 | 错误修正容量 | | | ------ | ------ | | L水平 | 7%的字码可被修正 |
    | M水平 | 15%的字码可被修正 |
    | Q水平 | 25%的字码可被修正 |
    | H水平 | 30%的字码可被修正 |

数据码和纠错码并不是简单的排列在一块儿,而是进行了一系列复杂计算,详情见连接:二维码的生成细节和原理网络


2、二维码解析流程分析

  1. 定位图形:首先寻找探测图形,就是二维码上的三个方块。这三个方块的做用就是无论在哪一个方向扫描图形,均可以扫到,不信能够将手机翻转测试一下。在经过二维码上的定位图形和分隔符肯定二维码信息的图像。定位图形肯定二维码符号中模块的坐标,二维码中的模块都是固定的,包括校订图形,版本信息,数据和纠错码。分隔符呢,就是将探测图形与二维码信息图像分开。
  2. 灰度化二维码信息像素:手机拍到的图像都是彩色的,因此拍摄到二维码也不列外,它也是彩色的,只不过除了黑白,其余颜色很是浅而已。灰度化是指经过颜色的深浅来识别二维码,就是说颜色深的按深灰处理,浅色的按浅灰处理,去掉其余颜色。
  3. 去掉二维码信息像素的噪点:相机的传感器在把光线做为接收信号和输出过程产生的粗糙像素,这些粗糙的像素是照片中不该该出现的干扰因素。噪点就是指这些粗糙的像素。
  4. 二值化二维码信息像素:二值化是说将图像上像素灰度值设置为0或者255,也就是变成只有黑白两种颜色。第一步已经灰度化变成只有深灰和浅灰两种颜色,如今二值化是将深灰变成黑色,浅灰变成白色。为何变成黑白色呢。由于二维码图像实际上是由二进制的0或者1组成,0表明白色,1表明黑色。二维码在二值化时会将二维码图像变成只有黑白色的条码,而后根据解析公式什么的(由于像素是0-255之间,要所有转变成0或者255,估计得通过一些计算,而后0就是0,255变为1)转化成二进制信息。
  5. 二维码译码和纠错:将获得的二进制信息进行译码和纠错。获得的二进制信息是版本格式信息、数据和纠错码通过必定的编码方式生成的,因此译码是对版本格式信息,数据和纠错码进行解码和对比。纠错是和译码同时进行的,将数据进行纠错。
  6. 获取到最终数据。

3、二维码功能分析

按二维码类别划分:测试

1D product 1D industrial 2D
UPC-A Code 39 QR Code
UPC-E Code 93 Data Matrix
EAN-8 Code 128 Aztec (beta)
EAN-13 Codabar PDF 417 (beta)
ITF MaxiCode
RSS-14
RSS-Expanded

按扫码结果划分:网站

  • AddressBookResultHandler 通信录地址
  • CalendarResultHandler 日历条目
  • EmailAddressResultHandler 电子邮件地址
  • GeoResultHandler 地理坐标
  • ISBNResultHandler 图书编号
  • ProductResultHandler 非图书产品信息
  • SMSResultHandler 短信内容
  • TelResultHandler 电话号码
  • TextResultHandler 文本内容
  • URIResultHandler 网络链接
  • WifiResultHandler WiFi接入信息

按业务划分:编码

  • 信息获取(名片、地图、WIFI密码、资料)
  • 网站跳转(跳转到微博、手机网站、网站)
  • 广告推送(用户扫码,直接浏览商家推送的视频、音频广告)
  • 手机电商(用户扫码、手机直接购物下单)
  • 防伪溯源(用户扫码、便可查看生产地;同时后台能够获取最终消费地)
  • 优惠促销(用户扫码,下载电子优惠券,抽奖)
  • 会员管理(用户手机上获取电子会员信息、VIP服务)
  • 手机支付(扫描商品二维码,经过银行或第三方支付提供的手机端通道完成支付)
相关文章
相关标签/搜索