使用QT C++开发生成二维码

1.  背景知识

二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,其应用广泛,如:产品防伪/溯源、广告推送、网站链接、数据下载、商品交易、定位/导航、电子凭证、车辆管理、信息传递、名片交流、wifi共享等。

二维码的信息承载量很大,最大数据含量可达1850个字符,信息内容可包含,字母,数字,汉字,字符,片假名等。二维码常用的码制有:PDF417二维条码,Datamatrix二维条码,QR Code,Code 49,Code 16K,Codeone等。

QRCode是日本人开发的,使用里德-所罗门码来进行错误修正。对于我们来说,里德-所罗门编码有两个非常重要的特性。第一,它是一种显式系统码,也就是说,你可以在最终的编码中直接看到原有的信息。就好比我们对”hello world”进行编码,最终看到的是”hello world”以及其后面跟随的几个容错码。第二点,里德-所罗门编码是可以被”异或”的,将两个不同里德-所罗门编码得到的结果异或运算后会得到一个新的里德-所罗门码,并且这个新码的原码即是原来两个原码的异或。

一副QRcode图像会定义一些独特的描述符来帮助人们或者电脑识别出自己是一张QRcode。这种描述符随着QRcode的大小不同而略有区别——越大的QRcode图像拥有越多的描述符。但是对于人的识别来说,特征最明显的还是图片的四个角的符号是固定的,看到这样的四个角人类就本能的反应:这是一个QRcode。(实际上,我们可以通过读取图像最左上角的两个象素点来判断编码的冗余程度。定义黑色为0,白色为1,那么如果看到00则是L级别的冗余,01是M,10是Q,11则是最高的H级别冗余。)

二维码的容错级分别为:L,M,Q和H。其中,L最低,H最高。如何从二维码中一眼看出其容错级别呢?看下图:

                      使用QT C++开发生成二维码_第1张图片

如上图所示,关键部分已用红色框框起来,识别方向也已用箭头标示。假定黑色块为1,白色为0,那么:

两黑色块平列,黑+黑=11,容错级为L;黑+白=10,为M级容错;白+黑=01,为Q级容错;白+白=00,为H级容错。

使用QT C++开发生成二维码_第2张图片

二维码的特性:

1)   在可识别的情况下,可成比例任意缩放。

2)   可任意角度旋转。

3)   可以水平或垂直反转(镜像)。

4)    在对比分明、在不影响硬件和软件识别的情况下,可彩色化。

5)    在不影响硬件和软件识别的情况下可艺术化。


源码下载地址:http://download.csdn.net/download/u014746838/10001864

你可能感兴趣的:(Qt学习资料)