文章详情
更多工具
二维码生成器在线制作
一、底层原理
二维码生成器的核心原理是将输入信息(如文本、链接、数字等)通过特定算法编码为二进制数据,再转换为由黑白模块组成的矩阵图案。以下是关键步骤:
-
信息编码
- 将输入信息(如汉字、字母、数字)转换为二进制数据。例如,汉字“中”在UTF-8编码中对应二进制11100100 10111000 10101101。
- 不同编码模式(如数字模式、字母数字混合模式、字节模式)对应不同的压缩规则。例如,数字模式每3个数字压缩为10位二进制,字母数字混合模式每2个字符压缩为11位二进制。
-
纠错码生成
- 使用Reed-Solomon纠错算法生成冗余数据,提高二维码容错性。例如,纠错级别为H时,可纠正最多30%的模块错误。
- 纠错码与数据码混合排列,确保局部损坏时仍能恢复信息。
-
矩阵填充
- 将编码数据和纠错码填充到二维码矩阵中,遵循特定版本(尺寸)和格式。例如,版本1的矩阵为21×21,版本40为177×177。
- 添加定位图案(三个角上的“回”字形)、校正图案(分散的小方块)和分隔符,帮助扫描设备定位和校正。
-
掩模处理
- 对矩阵应用掩模(Mask)模式,优化黑白模块分布,避免连续相同模块影响扫描。例如,掩模模式0要求(i + j) % 2 == 0时模块为黑色。
- 选择得分最低的掩模模式,确保二维码美观且易扫描。
二、案例详解:生成一个包含文本的二维码
假设需生成一个包含文本“Hello, QR Code!”的二维码,步骤如下:
-
输入信息
- 文本:“Hello, QR Code!”
- 编码模式:字母数字混合模式(因包含字母和标点)。
-
编码过程
- 将文本转换为ASCII码:H(72) e(101) l(108) l(108) o(111) ,(44) (32) Q(81) R(82) (32) C(67) o(111) d(100) e(101) !(33)
- 分组并压缩:每2个字符为一组,转换为11位二进制。例如,“He” → 72×45 + 101 = 3341 → 二进制011010000101。
- 最终编码数据:011010000101 011011000100 ...(共11组,121位二进制)。
-
纠错码生成
- 假设版本1、纠错级别L(7%纠错),需生成7位纠错码。
- 使用Reed-Solomon算法生成纠错码,与数据码混合排列。
-
矩阵填充与掩模
- 将数据码和纠错码填充到21×21矩阵中,添加定位图案和分隔符。
- 应用掩模模式0,优化模块分布。
-
生成二维码
-
最终生成的二维码如下(简化版):
█████████████████████ ██ ██ ██ ██ ██ ████ ██ ████ ██ ██ ██ ██ ████ ██ ████ ██ ██ ██ ██ ██ ██ ██ █████████████████████
-
最终生成的二维码如下(简化版):
三、关键点总结
- 纠错能力:纠错级别越高,二维码越“抗损”,但容量越小。例如,H级别可纠正30%错误,适合复杂环境。
- 版本选择:版本越高,容量越大,但物理尺寸也越大。例如,版本1可存储25个字母数字字符,版本40可存储1850个。
- 掩模优化:掩模模式的选择直接影响二维码的美观和扫描成功率。例如,掩模模式3要求i % 2 == 0时模块为黑色,可避免连续模块。