二维码的生成细节和原理
- 格式:doc
- 大小:711.00 KB
- 文档页数:16
二维码的生成原理和工作原理是什么?
二维码的原理可以分为生成原理和工作原理。
首先是生成原理:
该原理是,用特定的几何图形按编排规律
在二维方向上分布,采用黑白相见的图形来记
录数据符号信息。
为了利用计算机内部逻辑,用数字“0”和数字“1”作为代码,同时使用若干个与二进制相对应的几何形体表示文字数值信息。
这里面我有几个小知识点想提一提。
知识点一:二维码共有40个尺寸
也就是版本version,Version 1.0是21 x 21的正方形,Version 2.0是 25 x 25的(公式:(V-1)*4 + 21)。
所以最大的尺寸就是177 x 177 的正方形。
知识点二:三个点确定一个面
二维码只有三个角上有位置探测图案,就是这个就是为了更好的读取二维码。
那有人问为什么不是四个能,这个角也不是多余的,可以镶嵌别的信息。
知识点三:旋转二维码,也可以识别
因为有知识点二中所说的位置探测图案和分隔符,所以,无论是正着扫码,还是竖着扫码,或者斜着扫码,信息都可以被识别。
再来看看,二维码的工作原理:
通过常见的图象输入设备或光电扫描设备,它们可以自动读取,并且会对识别出的信息进行自动处理。
二维码原理及制作方法二维码(QR code)是一种可以存储信息的矩阵条形码,它可以通过扫描设备快速读取信息,被广泛应用于商业、物流、支付等领域。
本文将介绍二维码的原理及制作方法,帮助读者更好地了解和使用二维码技术。
一、二维码的原理。
二维码的原理是利用黑白相间的方块来编码信息,通过不同方块的排列组合来表示不同的数据。
二维码可以存储的信息包括文本、链接、电话号码、电子邮件等,其编码原理是将信息使用特定的编码规则转换成黑白相间的方块,然后通过扫描设备读取方块的排列组合来解码信息。
二、二维码的制作方法。
1.选择合适的二维码生成工具。
在制作二维码之前,首先需要选择一款合适的二维码生成工具。
目前市面上有很多免费或付费的二维码生成工具可供选择,如微信扫一扫、支付宝、二维码生成器等。
读者可以根据自己的需求和使用习惯选择合适的工具。
2.输入要编码的信息。
选择好二维码生成工具后,接下来需要输入要编码的信息。
根据二维码的应用场景和需求,可以输入文本、链接、电话号码、电子邮件等信息。
有些二维码生成工具还支持自定义颜色、添加LOGO等功能,可以根据需要进行设置。
3.生成二维码。
输入完要编码的信息后,点击生成按钮即可生成对应的二维码。
生成的二维码可以保存为图片格式,也可以直接打印出来使用。
在生成二维码的过程中,需要注意选择合适的尺寸和清晰度,以确保二维码在不同场景下都能够被准确扫描。
4.测试二维码的可读性。
生成二维码后,需要进行测试以确保二维码的可读性。
可以使用不同型号的扫描设备对二维码进行扫描,验证二维码是否能够准确读取信息。
如果出现读取失败的情况,需要重新调整二维码的尺寸、清晰度等参数,直到生成可读性良好的二维码。
5.二维码的应用。
生成好二维码后,可以将其应用到不同的场景中。
例如,将二维码添加到产品包装上,让消费者扫描获取产品信息;将二维码添加到宣传海报上,让人们扫描获取活动详情等。
二维码的应用场景非常广泛,可以根据实际需求进行灵活运用。
二维码的原理及组成二维码是一种用于储存信息的矩阵条形码,它的广泛应用使得我们的生活更加便捷。
本文将详细介绍二维码的原理以及其组成。
一、二维码的原理二维码的原理基于条形码技术,但相比于传统的一维条形码,二维码能够储存更多的信息。
它采用了两个方向的编码方式,即横向和纵向的编码。
通过将这些编码组合在一个矩阵中,形成一个图案,从而实现信息的储存和识别。
具体来说,二维码的原理如下:1. 信息编码:二维码中的信息由一系列黑白模块组成。
这些模块代表了二进制编码的数据。
黑色代表二进制数字0,白色代表二进制数字1。
通过这种编码方式,可以表达更多的信息。
2. 定位模块:二维码中的定位模块用于帮助识别器准确地定位二维码。
一般情况下,二维码的四个角上都会有特殊的图案,称为定位模块。
识别器可以通过这些定位模块来确定二维码的位置和方向。
3. 校验信息:为了确保二维码的准确性和可靠性,在二维码中通常会嵌入一些校验信息。
这些信息可以在解码过程中进行验证,以确保二维码的完整性和正确性。
二、二维码的组成二维码由多个元素组成,下面将介绍二维码的主要组成部分:1. 定位模块:如前所述,定位模块位于二维码的四个角上,用于帮助识别器准确定位二维码。
2. 容错区域:容错区域是用来确保二维码在一定程度上具备纠错能力的。
当二维码受到损坏或部分遮挡时,容错区域可以帮助识别器恢复原始信息。
3. 数据区域:数据区域是二维码中储存实际信息的部分。
它由一系列黑白模块组成,通过编码方式来表示数据。
4. 校验信息:二维码中的校验信息用于验证解码过程中的准确性。
校验信息通常以特定的方式嵌入在二维码中,以便在解码时进行验证。
5. 二维码标识:为了使二维码易于识别,往往会为其添加一些标识,如公司名称、品牌商标等。
这些标识可以帮助用户更快地辨认出二维码的用途或来源。
总结:二维码的原理基于条形码技术,通过两个方向的编码方式实现信息的储存和识别。
它由定位模块、容错区域、数据区域、校验信息和二维码标识等组成。
二维码的原理及组成二维码在现代社会中得到了广泛应用,它不仅简洁方便,还可以存储大量的信息。
那么,二维码是如何工作的呢?本文将介绍二维码的原理及其组成。
二维码的原理:二维码是一种由方格矩阵组成的图形,可以通过扫描设备对其进行解码,并获取其中所存储的信息。
它通过不同的图案组合,将信息编码成二维码的形式。
与传统的条形码相比,二维码可以存储更多的信息,且可靠性更高。
二维码的组成:1. 定位点:二维码中的四个角落通常有一个明显的定位点,用于确定二维码的方向和位置,以帮助扫描设备准确定位二维码。
2. 对齐图案:在定位点的周围,通常还会有一些对齐图案,用于帮助扫描设备更准确地识别二维码中的方格矩阵。
3. 掩码图案:为了保证二维码图案的质量和可靠性,二维码中的每个方格矩阵都会应用一定的掩码算法。
这种算法可以根据固定的规则对二维码中的方格进行逐个改变,以消除潜在的错误。
4. 数据编码:二维码中最重要的组成部分是数据编码区域。
不同的编码方法会选择不同的方格组合方式来存储数据。
最常见的编码方式包括字母、数字、符号、汉字等。
5. 容错级别:为了提高二维码的容错能力,还会在二维码中加入一定数量的冗余数据。
这些冗余数据可以帮助扫描设备在部分方格破损或模糊的情况下仍然能够正确识别出二维码中的信息。
除了以上几种组成部分,二维码还可以根据实际需求添加其他的辅助功能,比如链接功能、支付功能等。
这些功能可以通过二维码的特定编码方式实现。
总结:二维码是通过方格矩阵的组合来存储和传递信息的技术。
它由定位点、对齐图案、掩码图案、数据编码和容错级别等组成部分构成。
二维码的原理和组成使得它成为现代社会中常用的信息传递方式。
随着技术的发展,二维码的应用也越来越广泛,为人们的生活带来了更多的便利和效率。
二维码的原理及组成二维码是一种将信息编码成图像的技术,广泛应用于商业、支付、物流等领域。
它采用了矩阵结构,通过黑白方块的组合来表示不同的信息,具有信息容量大、易扫描等优点。
本文将介绍二维码的原理及其组成。
一、二维码的原理二维码的原理基于信息的编码和解码。
它使用了多项技术,包括编码方式、定位模块、对齐模块和时钟等。
1. 编码方式二维码可以使用多种编码方式,如QR码(Quick Response Code)、Data Matrix码和PDF417码等。
其中,QR码是最常用的编码方式,使用了一种特殊的编码算法,将字符、数字、汉字等信息按照规定的格式编码为二维码图像。
2. 定位模块二维码中的定位模块用于帮助扫码设备准确定位二维码的位置和方向。
一般情况下,定位模块位于二维码的四个角落,并采用了特殊的图案,如L型、实心方块等。
3. 对齐模块对齐模块用于校正扫码设备的摄像头,以便更好地识别二维码。
对齐模块通常位于二维码的中心区域,由多个规律排列的方块组成。
4. 时钟二维码中的时钟模块用于确定信息的编码方式和解码顺序。
时钟模块通常位于二维码的某一条边上,由多个规律排列的方块组成。
二、二维码的组成二维码由多个元素组成,包括边界、定位模块、对齐模块、时钟模块和数据区域等。
1. 边界二维码的边界用于标识整个二维码的范围,通常为一条实线或虚线。
2. 定位模块定位模块用于帮助识别二维码的位置和方向,通常为四个角落的L型或实心方块。
3. 对齐模块对齐模块用于校正扫码设备的摄像头,通常位于二维码的中心区域,并由多个规律排列的方块组成。
4. 时钟模块时钟模块用于确定信息的编码方式和解码顺序,通常位于二维码的某一条边上,并由多个规律排列的方块组成。
5. 数据区域数据区域是二维码中真正编码了信息的地方,通常由黑白方块组成。
黑色方块表示二进制的0,白色方块表示二进制的1。
数据区域的大小和容量取决于编码方式和二维码的版本。
总结:二维码是一种信息编码和解码的技术,利用矩阵结构和黑白方块的组合来表示不同的信息。
二维码的原理及组成二维码(QR code)是一种将图形信息以矩阵的形式进行编码的二维条码。
它由黑白相间的小方块组成,在现代社会中得到了广泛应用。
本文将介绍二维码的原理及其组成部分。
一、二维码的原理二维码的原理是将文字、数字、图片等信息转化为特定的黑白矩阵,并通过扫描器或者手机摄像头进行读取解码。
其编码方式采用了汉明码、压缩编码等算法,保证了信息的可靠传输和高密度存储。
二、二维码的组成部分1. 定位图案:二维码的定位图案通常是在四个角落以及中心位置处,用于确定二维码的位置和方向。
2. 容错图案:为了提高二维码的容错率,防止一部分信息遗失后无法读取,二维码中添加了一些冗余的容错图案。
3. 数据区域:数据区域是二维码中最重要的部分,它存储了二维码所代表的信息。
数据区域由多个二进制位组成,每个二进制位表示一个黑白方块。
4. 校验码:校验码用于验证二维码是否扫描正确,一般位于数据区域的一侧或者底部。
5. 二维码版本信息:二维码版本信息指的是二维码的大小和容量。
不同的二维码版本拥有不同的尺寸和存储容量,适用于不同的应用场景。
6. 二维码规则参数:二维码规则参数包括校正图案的大小、定位图案的位置、数据区域的编码方式等。
这些规则参数保证了二维码的稳定性和可靠性。
7. 编码格式信息:编码格式信息用于对数据区域进行解码。
它包括了字符集、数据类型等信息。
三、二维码的应用随着智能手机的普及,二维码应用越来越广泛。
它在商业、物流、旅游、支付等领域发挥着重要的作用。
1. 商业应用:二维码在商业中被用于商品溯源、防伪标识、促销活动等方面。
通过扫描二维码,消费者可以获取商品的详细信息,增加了购物的便利性和安全性。
2. 物流应用:二维码在物流行业中用于货物追踪和管理。
每个货物上都可以贴上二维码,通过扫描二维码可以实时查询货物的位置和状态。
3. 旅游应用:二维码在旅游行业中用于景点导览、门票核验等方面。
游客可以通过扫描二维码获取景点的介绍、导航信息,提升旅游体验。
二维码原理及制作方法二维码(QR Code),又称快速响应码,是一种可以储存数据的矩阵条码。
它可以在垂直方向和水平方向上扫描,将数据以二维的形式进行编码,因此相对于一维条码来说,它可以存储更多的信息。
二维码已经被广泛应用于各个领域,如支付、物流、广告等,它的原理和制作方法是我们需要了解的。
下面,我们将详细介绍二维码的原理及制作方法。
二维码的原理主要是利用黑白像素点的排列组合来表示特定的信息。
在二维码的图案中,黑色像素点代表数字1,白色像素点代表数字0。
通过这种编码方式,可以将文本、链接、图片等信息转化为二维码的形式。
当我们用手机或扫描设备对二维码进行扫描时,设备会解析出二维码中所包含的信息,并进行相应的处理,比如打开链接、显示文本等。
制作二维码的方法非常简单,我们可以通过在线生成器或专业的二维码制作软件来实现。
首先,我们需要确定要转化为二维码的信息,比如网址、文本、联系方式等。
然后,我们可以选择合适的二维码生成工具,将信息输入到工具中,并进行生成。
在生成的过程中,我们可以对二维码的颜色、尺寸等进行调整,以满足实际应用的需求。
最后,我们将生成的二维码保存或导出,就可以在需要的场合使用了。
除了生成二维码外,我们还可以在二维码中添加一些特定的设计元素,以增加二维码的美观性和辨识度。
比如,在二维码的中心位置加入Logo,或者在二维码的周围添加一些装饰性的图案。
这些设计元素可以让二维码更具吸引力,同时也能够提升用户对二维码的识别和记忆度。
总的来说,二维码是一种非常便捷和实用的信息传递方式,它的原理简单易懂,制作方法也非常灵活多样。
在实际应用中,我们可以根据需要灵活运用二维码,将其应用于各个领域,为我们的生活和工作带来便利。
希望通过本文的介绍,大家对二维码的原理和制作方法有了更深入的了解,能够更好地利用二维码这一工具。
二维码生成原理和识别原理二维码(QR Code)是一种能够存储数据的矩阵条形码,它可以通过扫描设备快速读取信息。
二维码技术已经被广泛应用于各个领域,如支付、物流、门禁等。
那么,二维码是如何生成的呢?它又是如何被识别的呢?本文将对二维码的生成原理和识别原理进行介绍。
首先,我们来了解一下二维码的生成原理。
二维码的生成是通过编码器将输入的数据转换成矩阵条形码的过程。
在编码的过程中,数据被转换成黑白块的排列,形成了二维码的图案。
生成二维码的过程主要包括以下几个步骤:1. 数据编码,将输入的数据经过编码算法进行处理,生成对应的矩阵条形码的数据。
2. 掩模模式选择,在生成二维码时,需要选择合适的掩模模式,以保证二维码的识别准确性和容错能力。
3. 纠错码添加,为了提高二维码的容错能力,通常会在生成的二维码中添加一定的纠错码,以保证在一定程度的损坏情况下仍然能够正确识别。
4. 图案生成,根据编码后的数据,生成对应的黑白块图案,形成最终的二维码图案。
其次,我们来了解一下二维码的识别原理。
二维码的识别是通过扫描设备将二维码图案转换成可识别的数据的过程。
在识别的过程中,扫描设备需要对图案进行处理,提取出其中的信息。
二维码的识别原理主要包括以下几个步骤:1. 图像采集,扫描设备通过摄像头对二维码进行图像采集,获取二维码的图案信息。
2. 图像预处理,对采集到的图像进行预处理,包括灰度化、二值化、去噪等操作,以提高后续的图像处理效果。
3. 定位图案定位,在预处理后的图像中,通过特定的算法定位二维码的位置和方向,以便后续的图案解析。
4. 图案解析,对定位后的二维码图案进行解析,提取其中的编码数据。
5. 数据解码,对提取出的编码数据进行解码,得到最终的数据信息。
综上所述,二维码的生成原理和识别原理分别涉及到了编码、图案生成、数据解析等技术。
通过对二维码的生成和识别原理进行了解,我们能更好地理解二维码技术的应用和发展,为相关领域的应用提供技术支持和指导。
二维码的原理及组成二维码是一种常用的编码图形,它能够以快速、高效的方式存储和传递数据。
二维码广泛应用于商业、技术和个人生活中,因其可靠性和便捷性而备受推崇。
本文将介绍二维码的原理及其组成。
一、二维码的原理二维码的设计基于矩阵编码的原理。
通常,二维码由黑白像素点组成的正方形或矩形格子构成。
通过不同的像素排列组合,可以表示不同的字符、数字或其他数据。
二维码的原理可以概括如下:1. 数据编码:二维码可以存储大量的数据,包括文字、数字、链接、图片等。
数据编码的过程通常采用特定的编码算法,如QR码(Quick Response Code)算法。
2. 容错能力:为了提高识读二维码的准确性和容错能力,二维码采用了纠错编码技术。
在编码的过程中,额外的冗余信息被添加到二维码中,以便在二维码出现损坏或破损的情况下仍然能够正确解码。
3. 数据保存:二维码的图形信息是由黑白象素点组成的,黑色代表二进制的"1",白色代表二进制的"0"。
这些像素点的排列和颜色组合形成了存储在二维码中的数据。
二、二维码的组成二维码通常由几个主要的元素组成,包括定位点、对齐图案、时钟图案和数据区域。
下面将逐个介绍这些组成部分:1. 定位点:二维码的定位点用于确定二维码的边界和方位。
定位点通常是位于二维码四个角落的大型正方形或L形图案。
扫描仪可以通过检测到这些定位点来判断二维码的角度和大小。
2. 对齐图案:为了提高二维码的可靠性和识别准确性,对齐图案被添加到二维码中。
对齐图案通常由一系列小正方形组成的特殊图案,在扫描过程中,扫描仪会通过寻找这些对齐图案来调整图像的扭曲和旋转。
3. 时钟图案:时钟图案是二维码的基准图案,用于定位和整理二维码中的数据。
时钟图案通常由一系列的黑白相间的像素线组成,扫描仪会根据这些时钟图案来解读二维码的数据。
4. 数据区域:二维码的数据区域是最重要的部分,它包含了存储在二维码中的具体数据。
二维码的原理及组成二维码是一种通过编码信息在二维平面上进行存储和传递的技术。
它已经广泛应用于各个领域,如商业、交通、支付等。
本文将介绍二维码的原理及其组成。
一、二维码的原理二维码是将信息编码转化为一系列黑白模块的图像,通过扫描即可解码。
它的原理可以简单分为三步:编码、扫描和解码。
1. 编码:将输入的信息经过编码算法转化为黑白模块的二维码图像。
常见的编码算法有QR码、Data Matrix码等。
2. 扫描:使用相机或专用的二维码扫描仪对二维码进行扫描,将图像数据转化为数字信号。
扫描过程中,相机会根据二维码特征来判断模块的亮度和颜色,并记录下来。
3. 解码:通过解码算法将图像数据转化为文本或其他数据格式。
解码算法会分析图像数据中模块的位置、形状、亮度等特征,并对比预设的编码规则,最终还原出原始信息。
二、二维码的组成二维码由若干个模块组成,每个模块代表一个编码单位。
二维码的组成包括:定位图案、对齐图案、时钟图案、数据区域和格式信息区域。
1. 定位图案:二维码的定位图案用于标识二维码的方向,确保扫描时的正确识别。
通常为多个角落处的大尺寸正方形模块。
2. 对齐图案:对齐图案是为了在扫描时能够准确找到二维码的位置。
它通常位于二维码中心附近,由一系列矩形模块构成。
3. 时钟图案:时钟图案用于帮助扫描仪校准解码过程中的时钟频率,确保准确读取模块信息。
它通常位于二维码的某个固定位置,由一系列L形模块构成。
4. 数据区域:数据区域是承载编码信息的核心区域,由黑白模块构成。
不同的编码算法使用不同的模块排列方式,以及校验码等方式来存储数据。
5. 格式信息区域:格式信息区域用于存储二维码的编码规则和版本号等信息。
它通常位于二维码的某个固定位置,由黑白模块的特定排列方式表示。
总结:二维码是一种通过编码、扫描和解码的技术,用于在二维平面上存储和传递信息。
它由定位图案、对齐图案、时钟图案、数据区域和格式信息区域组成。
通过扫描二维码,可以将存储在其中的信息快速解码并获取。
二维码的生成细节和原理二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。
这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章,揭露一下。
供好学的人一同学习之。
关于QR Code Specification,可参看:/files/datasheets/misc/qr_code.pdf基础知识首先,我们先说一下二维码一共有40个尺寸。
官方叫版本Version。
Version 1是21 x 21的矩阵,Version 2是25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸,公式是:(V-1)*4 + 21(V是版本号)最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的形。
下面我们看看一个二维码的样例:定位图案•Position Detection Pattern是定位图案,用于标记二维码的矩形大小。
这三个定位图案有白边叫Separators for Postion Detection Patterns。
之所以三个而不是四个意思就是三个就可以标识一个矩形了。
•Timing Patterns也是用于定位的。
原因是二维码有40种尺寸,尺寸过大了后需要有根标准线,不然扫描的时候可能会扫歪了。
•Alignment Patterns 只有Version 2以上(包括Version2)的二维码需要这个东东,同样是为了定位用的。
功能性数据•Format Information 存在于所有的尺寸中,用于存放一些格式化数据的。
•Version Information 在>= Version 7以上,需要预留两块3 x 6的区域存放一些版本信息。
数据码和纠错码•除了上述的那些地方,剩下的地方存放Data Code 数据码和Error Correction Code 纠错码。
数据编码我们先来说说数据编码。
QR码支持如下的编码:Numeric mode数字编码,从0到9。
如果需要编码的数字的个数不是3的倍数,那么,最后剩下的1或2位数会被转成4或7bits,则其它的每3位数字会被编成10,12,14bits,编成多长还要看二维码的尺寸(下面有一个表Table 3说明了这点)Alphanumeric mode字符编码。
包括0-9,大写的A到Z(没有小写),以及符号$ % * + – . / : 包括空格。
这些字符会映射成一个字符索引表。
如下所示:(其中的SP是空格,Char是字符,Value是其索引值)编码的过程是把字符两两分组,然后转成下表的45进制,然后转成11bits的二进制,如果最后有一个落单的,那就转成6bits的二进制。
而编码模式和字符的个数需要根据不同的Version尺寸编成9, 11或13个二进制(如下表中Table 3)Byte mode字节编码,可以是0-255的ISO-8859-1字符。
有些二维码的扫描器可以自动检测是否是UTF-8的编码。
Kanji mode这是日文编码,也是双字节编码。
同样,也可以用于中文编码。
日文和汉字的编码会减去一个值。
如:在0X8140 to 0X9FFC中的字符会减去8140,在0XE040到0XEBBF中的字符要减去0XC140,然后把前两位拿出来乘以0XC0,然后再加上后两位,最后转成13bit的编码。
如下图示例:Extended Channel Interpretation (ECI) mode主要用于特殊的字符集。
并不是所有的扫描器都支持这种编码。
Structured Append mode用于混合编码,也就是说,这个二维码中包含了多种编码格式。
FNC1 mode这种编码方式主要是给一些特殊的工业或行业用的。
比如GS1条形码之类的。
简单起见,后面三种不会在本文中讨论。
下面两表中,•Table 2 是各个编码格式的“编号”,这个东西要写在Format Information中。
注:中文是1101•Table 3 表示了,不同版本(尺寸)的二维码,对于,数字,字符,字节和Kanji 模式下,对于单个编码的2进制的位数。
(在二维码的规格说明书中,有各种各样的编码规表,后面还会提到)下面我们看几个示例,示例一:数字编码在Version 1的尺寸下,纠错级别为H的情况下,编码:012345671. 把上述数字分成三组: 012 345 672. 把他们转成二进制: 012 转成0000001100; 345 转成010*******; 67 转成1000011。
3. 把这三个二进制串起来: 0000001100 010******* 10000114. 把数字的个数转成二进制(version 1-H是10 bits ):8个数字的二进制是00000010005. 把数字编码的标志0001和第4步的编码加到前面: 0001 0000001000 0000001100 010******* 1000011示例二:字符编码在Version 1的尺寸下,纠错级别为H 的情况下,编码: AC-421. 从字符索引表中找到 AC-42 这五个字条的索引 (10,12,41,4,2)2. 两两分组: (10,12) (41,4) (2)3.把每一组转成11bits 的二进制:(10,12) 10*45+12 等于 462 转成 00111001110(41,4) 41*45+4 等于 1849 转成 11100111001(2) 等于 2 转成 0000104. 把这些二进制连接起来:00111001110 11100111001 0000105. 把字符的个数转成二进制 (Version 1-H 为9 bits ): 5个字符,5转成 0000001016. 在头上加上编码标识 0010 和第5步的个数编码: 0010 000000101 00111001110 11100111001 000010结束符和补齐符假如我们有个HELLO WORLD 的字符串要编码,根据上面的示例二,我们可以得到下面的编码,编码 字符数 HELLO WORLD 的编码0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 001101我们还要加上结束符:编码 字符数 HELLO WORLD 的编码结束 0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 0011010000按8bits重排如果所有的编码加起来不是8个倍数我们还要在后面加上足够的0,比如上面一共有78个bits,所以,我们还要加上2个0,然后按8个bits分好组:00100000 01011011 00001011 01111000 11010001 01110010 11011 100 01001101 01000011 01000000补齐码(Padding Bytes)最后,如果如果还没有达到我们最大的bits数的限制,我们还要加一些补齐码(Padding Bytes),Padding Bytes就是重复下面的两个bytes:11101100 00010001 (这两个二进制转成十进制是236和17,我也不知道为什么,只知道Spec上是这么写的)关于每一个Version的每一种纠错级别的最大Bits限制,可以参看QR Code Spec的第28页到32页的Table-7一表。
假设我们需要编码的是Version 1的Q纠错级,那么,其最大需要104个bits,而我们上面只有80个bits,所以,还需要24个bits,也就是需要3个Padding Bytes,我们就添加三个,于是得到下面的编码:00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100纠错码上面我们说到了一些纠错级别,Error Correction Code Level,二维码中有四种级别的纠错,这就是为什么二维码有残缺还能扫出来,也就是为什么有人在二维码的中心位置加入图标。
错误修正容量L水平7%的字码可被修正M水平15%的字码可被修正Q水平 25%的字码可被修正H水平 30%的字码可被修正那么,QR是怎么对数据码加上纠错码的?首先,我们需要对数据码进行分组,也就是分成不同的Block,然后对各个Block进行纠错编码,对于如何分组,我们可以查看QR Code Spec的第33页到44页的Table-13到Table-22的定义表。
注意最后两列:•Number of Error Code Correction Blocks:需要分多少个块。
•Error Correction Code Per Blocks:每一个块中的code个数,所谓的code的个数,也就是有多少个8bits的字节。
举个例子:上述的Version 5 + Q纠错级:需要4个Blocks(2个Blocks为一组,共两组),头一组的两个Blocks中各15个bits数据+ 各9个bits的纠错码(注:表中的codewords就是一个8bits的byte)(再注:最后一例中的(c, k, r )的公式为:c = k + 2 * r,因为后脚注解释了:纠错码的容量小于纠错码的一半)下图给一个5-Q的示例(因为二进制写起来会让表格太大,所以,我都用了十进制)组块数据对每个块的纠错码1 167 85 70 134 87 38 85 119 50 6 186 103 38213 11 45 115 247 241 223 229 248 154117 154 111 86 161 111 392246 246 66 7 118 134 242 7 38 8622 146 687 204 96 60 202 182 124 157 200 134 27129 209 17 1202 1182 230 247 119 50 7 118 134 87 3882 6 134 151 50 7148 116 177 212 76 75 242 238 76 23010 108 240 192 141270 247 118 86 6 151 50 16 236 17236 17 236 17 236235 159 5 173 24 147 59 33 106 40 255 17282 2 131 32 178 236注:二维码的纠错码主要是通过Reed-Solomon error correction(里德-所罗门纠错算法)来实现的。