二维码生成原理及教程
♦️二维码生成原理及教程
type
status
date
slug
summary
tags
category
icon
password

介绍

二维码是一种特殊类型的条形码,可以对数字、字母和汉字字符等信息进行编码。本教程是为想要学习如何编码二维码的程序员编写的。编码过程很复杂,尤其是在生成纠错码字的步骤中。本教程将尝试用简单的术语解释整个过程。本教程假定您至少具备一些基本的编程知识。

历史和信息

二维码格式由日本公司Denso-Wave于1994年创建,该公司是丰田生产汽车零部件的子公司。该标准在 ISO/IEC 18004:2006 中定义。二维码的使用是免许可证的。
最小的二维码是 21x21 像素,最大的是 177x177。这些大小称为版本(Version)。21x21 像素大小是版本 1,25x25 是版本 2,依此类推。177x177 大小是版本 40。
此外,二维码包括纠错功能:当您对二维码进行编码时,您还会创建一些冗余数据,这些数据将帮助 二维码扫码器准确读取代码,即使其中一部分不可读的情况下也可以进行读取。您可以选择四个级别的纠错。最低的是L,即使其中7%污损,也可以读取二维码中包含的数据。之后是 M,提供 15% 的纠错,然后是 Q,提供 25%,最后是 H,提供 30%。
给定二维码的容量取决于版本和纠错级别,以及您正在编码的数据类型。二维码可以编码四种数据模式:数字、字母数字、二进制或日文汉字。Denso-Wave 网站的 二维码版本列表包含有关您可以在每个版本中编码多少数据位的信息。

创建二维码的一般概述

本教程的将详细解释二维码编码过程。以下是该过程的一般概述,您可以在继续执行更详细的步骤之前阅读。

步骤 1:数据分析

二维码对文本字符串进行编码。二维码标准有四种文本编码模式:数字、字母与数字并用、字节和日文汉字。每种模式都将文本编码为一串位(bits,1 和 0),但每种模式都使用不同的方法将文本转换为位,并且每种编码方法都经过优化,以使用尽可能短的位字符串对数据进行编码。因此,您的第一步应该是执行数据分析,以确定您的文本是否可以以数字、字符、字节或日文汉字模式编码,然后为您的文本选择最佳模式。
数据分析

步骤 2:数据编码

现在,您已经为文本选择了适当的编码模式,下一步是对文本进行编码。数据编码部分详细介绍了每种编码模式的此过程。此步骤的结果是一串位,该字符串被拆分为数据码字,每个码字长 8 位。
数据编码

步骤 3:纠错编码

如上所述,二维码使用纠错来防止二维码出现污损而导致数据无法读取等问题。这意味着,在创建表示文本的数据位字符串后,必须让这些位通过称为 里德-所罗门纠错 (Reed–Solomon error correction) 的过程来生成纠错码字。
QR扫描仪读取数据码字和纠错码字。通过比较两者,扫描程序可以确定它是否正确读取了数据,如果它没有正确读取数据,它可以纠正错误。纠错编码部分详细解释了生成纠错码字的过程。有关更多信息,请阅读维基百科关于里德-所罗门码的相关内容。
纠错编码
 

步骤 4:结构化最终信息

在前面的步骤中生成的数据和纠错码字现在必须按正确的顺序排列。对于大型二维码,数据和纠错码字以块形式生成,这些块必须按照二维码规范进行交错。此过程在结构化最终信息部分中进行了说明。
结构化最终信息

步骤 5:矩阵中的模块放置

生成数据码字和纠错码字并按正确顺序排列后,必须将位放入二维码矩阵中。码字以特定方式排列在矩阵中。在此步骤中,您还需要放置所有二维码通用的图案,例如三个角上的框。此过程在矩阵中的模块放置部分中进行了详细说明。
矩阵中的模块放置

步骤 6:数据屏蔽

二维码矩阵中的某些图案会使二维码扫描仪难以正确读取代码。为了抵消这一点,二维码规范定义了八种掩码图案,每种图案都会根据特定图案改变二维码。您必须确定这些掩码模式中的哪一种会导致 二维码具有最少的不良特征。这是通过根据四个惩罚规则评估每个掩蔽后的矩阵来完成的。您的最终二维码必须使用导致最低处罚分数的掩码图案。数据掩蔽部分介绍了掩蔽过程。
数据掩蔽
 

步骤 7:格式和版本信息

最后一步是通过在代码的特定区域添加在前面步骤中留空的代码区域中添加像素,将格式和版本信息(如有必要)添加到二维码。格式像素标识此二维码中使用的纠错级别和掩码图案。版本像素对二维码矩阵的大小进行编码,并且仅用于较大的二维码。有关最后一步的详细信息,请阅读格式和版本信息部分。
格式和版本信息

原文链接

 
二进制算法中的进位(CARRY)标志和溢出(OVERFLOW)标志使用Tacotron 2实现日语TTS