二维码的总结
立刻又要准备面试了,想起本身两年前应聘锤子科技的时候,和人家聊项目的时候被人家一聊就死。此情此景依然历历在目,因而打算沉下心来看看简单的二维码,一看发现这里面的知识点还真很多,今天就来总结一下其中的知识点。其实主要分为两类:html
- 二维码生成原理
- 二维码解析流程分析
- 二维码功能分析
1、二维码生成原理
二维码的生成原理主要涉及如下几个概念:面试
- 二维码的定位图案
- Position Detection Pattern 标记二维码矩形的大小,只有三个,由于三个点肯定一个矩形
- Timing Patterns 定位矩形位置的基准线,根据 Position Detection Pattern 三个点获得的两条基准线
- Alignment Patterns 定位须要的小矩形,只有二维码版本在2以上才能使用
- 二维码功能性数据
- Error Correction Level 纠错级别
- Masking 操做模式(有八种操做模式)
- 纠错码 经过BCH Code 计算得来 上面三个数据最终还须要与101010000010010作XOR操做。这样就保证不会由于咱们选用了00的纠错级别和000的Mask,从而形成所有为白色,这会增长咱们的扫描器的图像识别的困难。
- Version Information 在 >= Version 7以上,须要预留两块3 x 6的区域存放一些版本信息。
- 数据码
- 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条形码之类的。
- 结束符 占位
- 补齐符 占位
- 纠错码 Error Correction Code Level,二维码中有四种级别的纠错,这就是为何二维码有残缺还能扫出来,也就是为何有人在二维码的中心位置加入图标。 | 错误修正容量 | | | ------ | ------ | | L水平 | 7%的字码可被修正 |
| M水平 | 15%的字码可被修正 |
| Q水平 | 25%的字码可被修正 |
| H水平 | 30%的字码可被修正 |
数据码和纠错码并不是简单的排列在一块儿,而是进行了一系列复杂计算,详情见连接:二维码的生成细节和原理网络
2、二维码解析流程分析
- 定位图形:首先寻找探测图形,就是二维码上的三个方块。这三个方块的做用就是无论在哪一个方向扫描图形,均可以扫到,不信能够将手机翻转测试一下。在经过二维码上的定位图形和分隔符肯定二维码信息的图像。定位图形肯定二维码符号中模块的坐标,二维码中的模块都是固定的,包括校订图形,版本信息,数据和纠错码。分隔符呢,就是将探测图形与二维码信息图像分开。
- 灰度化二维码信息像素:手机拍到的图像都是彩色的,因此拍摄到二维码也不列外,它也是彩色的,只不过除了黑白,其余颜色很是浅而已。灰度化是指经过颜色的深浅来识别二维码,就是说颜色深的按深灰处理,浅色的按浅灰处理,去掉其余颜色。
- 去掉二维码信息像素的噪点:相机的传感器在把光线做为接收信号和输出过程产生的粗糙像素,这些粗糙的像素是照片中不该该出现的干扰因素。噪点就是指这些粗糙的像素。
- 二值化二维码信息像素:二值化是说将图像上像素灰度值设置为0或者255,也就是变成只有黑白两种颜色。第一步已经灰度化变成只有深灰和浅灰两种颜色,如今二值化是将深灰变成黑色,浅灰变成白色。为何变成黑白色呢。由于二维码图像实际上是由二进制的0或者1组成,0表明白色,1表明黑色。二维码在二值化时会将二维码图像变成只有黑白色的条码,而后根据解析公式什么的(由于像素是0-255之间,要所有转变成0或者255,估计得通过一些计算,而后0就是0,255变为1)转化成二进制信息。
- 二维码译码和纠错:将获得的二进制信息进行译码和纠错。获得的二进制信息是版本格式信息、数据和纠错码通过必定的编码方式生成的,因此译码是对版本格式信息,数据和纠错码进行解码和对比。纠错是和译码同时进行的,将数据进行纠错。
- 获取到最终数据。
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服务)
- 手机支付(扫描商品二维码,经过银行或第三方支付提供的手机端通道完成支付)