一、二维码是什么
二维码(2D Barcode)是用黑白方块按一定规则排列、用来存储信息的图形。我们日常扫的"二维码"绝大多数都是 QR Code(Quick Response Code,快速响应码),它是二维码中最流行的一种。
和传统的一维条形码相比,二维码的优势很明显:
| 维度 | 一维条形码 | 二维码(QR) |
| 存储方向 | 横向一维 | 横纵两维 |
| 容量 | 几十个字符 | 几千字符 |
| 类型 | 主要是数字 | 数字、字母、汉字、二进制 |
| 纠错 | 基本无 | 有,最多可恢复 30% 数据 |
| 读取速度 | 一般 | 快(任意角度都能扫) |
二、二维码的诞生
二维码的故事开始于 1994 年的日本。当时丰田旗下的电装公司(Denso Wave)在汽车制造流水线上遇到一个难题:传统的条形码容量太小,工人需要扫描多张条码才能识别一个零件,效率很低。
公司工程师原昌弘带领团队花了一年多时间,设计出了一种新的二维编码方案,能在一秒内被读取,还能容纳几百倍于条形码的数据。这就是 QR Code。
电装公司做了一个非常关键的决定:宣布放弃 QR Code 的专利权,允许任何人免费使用。这一决定直接推动了二维码在全世界的普及。
三、二维码的结构
把一张二维码放大看,你会发现它不是一堆随机方块,而是有清晰分区的。下面是 QR Code 的主要组成部分:
| 区域 | 位置 | 作用 |
| 定位点 | 左上、右上、左下 | 三个大方块,让扫描器快速定位二维码 |
| 校准点 | 右下偏内 | 较小的方块,用于校正扭曲和倾斜 |
| 时序图样 | 定位点之间的连线 | 黑白交替的线,用于确定模块大小 |
| 格式信息 | 定位点周围 | 记录纠错级别和掩码方案 |
| 数据区 | 中间所有剩余区域 | 真正存储内容的地方 |
| 纠错码 | 数据区里混在一起 | 用于损坏时恢复数据 |
| 静默区 | 最外圈一圈空白 | 帮助扫描器区分二维码和背景 |
三个定位点是 QR Code 最显眼的标志——三个角各一个,第四个角没有,正是这个特征让扫描器能瞬间判断"这是一张 QR Code"以及它旋转了多少度。
四、定位原理:为什么扫得这么快
QR Code 名字里的 "Quick" 不是白叫的。它能在 0.1 秒内被识别,主要依赖三个设计:
- 三个定位点:构成一个等腰直角三角形,扫描器只要找到这三个点,就能确定二维码的位置、大小和旋转角度,连倾斜的二维码也能扫。
- 静默区:定位点外围至少要留 4 个模块宽度的空白,让算法能一眼把它从背景里"抠"出来。
- 掩码:数据区会被一个掩码图样异或一遍,避免出现大面积的纯黑或纯白区域,这样扫描器更容易识别模块边界。
五、纠错级别:为什么破损还能扫
QR Code 内置了 Reed-Solomon 纠错算法。简单说就是:编码时除了存原始数据,还额外存一部分冗余的校验数据。当二维码被划伤、被遮挡、被污损时,扫描器可以用这些校验数据把丢失的部分"算"回来。
QR Code 有四个纠错级别:
| 级别 | 名称 | 可恢复数据比例 | 适用场景 |
| L | Low | 约 7% | 干净环境,追求容量 |
| M | Medium | 约 15% | 一般场景(默认) |
| Q | Quartile | 约 25% | 工业环境 |
| H | High | 约 30% | 易脏污环境、Logo 中间镂空 |
这就是为什么很多二维码中间挖一个洞放 Logo 还能扫——因为用了 H 级别纠错,最多能容忍 30% 的数据丢失。
六、容量限制
QR Code 的容量和版本、纠错级别、字符类型都有关。版本从 1 到 40,每升一个版本,边长增加 4 个模块,从 21x21 到 177x177。
以最常用的 Version 10 为例,不同字符类型的容量大约是:
| 数据类型 | 容量(L 级别) |
| 数字 | 约 652 个 |
| 字母数字 | 约 395 个 |
| 字节 | 约 271 个 |
| 汉字 | 约 181 个 |
注意几点:
- 汉字占的字节数多,所以容量看起来比英文小很多。
- 纠错级别越高,可用容量越小,因为要留位置给校验码。
- 不是越大越好,Version 40 的二维码虽然容量大,但手机摄像头要拍清楚全部模块反而困难,实际识别率会下降。
日常使用中,链接类二维码通常在 Version 3-7 之间,加上 M 级别纠错,是兼容性和识别率最好的组合。
七、为什么扫码能跳转网页
这其实是个常见的误解:二维码本身并不"跳转",它存的就是一段文本。跳转是手机系统做的事。
流程是这样的:
- 你打开相机或扫码 App,扫描二维码
- App 识别出二维码里存的是
https://example.com - App 判断这是一段 URL,弹出"是否打开"
- 你点确认,浏览器打开这个网址
所以二维码里可以放任何文本:网址、WiFi 密码、名片信息(vCard)、支付链接、纯文本……只要扫描端能理解对应格式,就能做出相应的动作。
下面是一个 WiFi 二维码的内容示例,扫码后手机会自动连接 WiFi:
WIFI:T:WPA;S:MyHomeWiFi;P:password123;;
八、实践推荐
了解了原理之后,日常生成二维码的场景非常多——产品包装、PPT 分享、活动报名、WiFi 分享等等。在线生成工具是最省事的方式:
- 二维码生成工具:https://52tool.net/tools/qrcode
支持文本、链接、WiFi、名片等多种内容,可以自定义大小、纠错级别,还能在中间放 Logo(自动用 H 级别纠错保证可扫)。生成后直接下载高清 PNG,打印或贴到任何地方都没问题。