WIndow下使用QT C++开发生成带Logo的二维码的程序

本文介绍了如何在Windows环境下使用QT C++开发一个生成带Logo的二维码程序。通过Libqrencode库,详细阐述了背景知识、实现步骤和具体代码,包括项目配置、Logo与二维码的合成技巧。
摘要由CSDN通过智能技术生成

 

现在二维码很流行,大街小巷大小商品广告上的二维码标签都随处可见,而且大都不是简单的纯二维码,而是中间有个性图标的二维码。网上比较少介绍基于windows下的C++二维码编码实现的文章,最近正好在windows平台下使用QT开发了一个简单的生成带LOGO的二维码小程序,特记录一下。使用的是Libqrencode开源c代码,这是一个c 语言的QR code 生成库。Libqrencode 暂时只支持 QR Code model 2,如果需要ECI 或者FNC1模式的话,还要想别的办法。

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最高。如何从二维码中一眼看出其容错级别呢?看下图:


图1 容错级示例

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

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

     

二维码的特性:

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值