QT 使用QZXing生成,解析二维码跟条码

1.下载QZXing库

        为什么要下载QZXing库,而不直接使用编译好的库文件?因为每个人使用的编译环境是不一样的,使用的编译器也不尽相同,不同编译器编译出来的库放到不同编译器下则不一定能够使用(至少我是这么理解的,使用别人的也经常出现崩溃的问题)。

        zxing 是一个开源的一维/二维条码图像处理库,目前的版本为 Java 语言开发

        链接地址:https://github.com/zxing/zxing

        QZXing的下载地址:GitHub - ftylitak/qzxing: Qt/QML wrapper library for the ZXing library. 1D/2D barcode image processing library

2.编译库文件

        QZXing是对ZXing用qt封装过的,所以很方便使用,打开src文件夹里面的pro文件,直接构建(快捷键Ctrl+B),这里不要点绿色的运行按钮,因为这是编译库,而不是运行程序。如出现 无法找到执行文档,请指定一个 这个弹窗时,点击  构建 - 重新构建项目“xxx”。Qt 编译C++库时提示“无法找到执行文档,请指定一个”的解决方法。_SherryMirai的博客-CSDN博客_qt无法找到执行文档

        编译过程中有的可能会出现各种错误,这里仅仅列出我出现的(我使用的是qt5.5,mingGW32编译)

错误1: error: 'uint8_t' does not name a type typedef uint8_t byte

大概是说c++用了c的代码,在错误上面添加  #include <stdint.h> 这个头文件即可

错误2: error: '>>' should be '> >' within a nested template argument list

错误原因:使用C++11之前标准的编译器会将">>“视为移位符号。

解决方法:打开pro文件,添加  CONFIG += c++11 utf8_source

对于编译过程中出现的警告就不管了。然后打开debug的文件夹下debug文件夹,

将里面的.a文件跟dll文件复制出来,新建一个lib文件夹, 放到lib里面。

 

3.写测试用例

        新建qt工程,普通qt widget app即可。

        然后将lib放到工程根目录下

        然后再pro中添加库引用,保存

#使用qzxing需要添加内容
LIBS += -L$$PWD/lib         -lQZXing3   #添加库
DEFINES += ENABLE_ENCODER_GENERIC   #开启二维码生成功能

 

        然后在src文件夹里面复制出QZXing.hQZXing_global.h,同样放到根目录下。

        最后在你需要用到的源文件包含头文件 

        #include "QZXing.h"

         即可正常使用

生成二维码示例:(encodeData好像说只能生成二维码,我没测试条码情况)

QImage img;
img = QZXing::encodeData(QString("12345"),QZXing::EncoderFormat_QR_CODE);

 得到img的图片就是12345生成的二维码。

二维码或条码识别示例:

    //开始解码
    QImage img(fileName);
    QZXing decoder;
    //设置解码类型 -- 二维码或ean13的条码
    decoder.setDecoder(QZXing::DecoderFormat_QR_CODE | QZXing::DecoderFormat_EAN_13 );
    //可选设置
    //decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal | QZXing::SourceFilter_ImageInverted);
    decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal);
    decoder.setTryHarderBehaviour(QZXing::TryHarderBehaviour_ThoroughScanning | QZXing::TryHarderBehaviour_Rotate);
    //解码
    QString result = decoder.decodeImage(img);

将文件完整路径给到fileName,生成的result就是识别到的内容

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值