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就是识别到的内容

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您好!关于在Qt使用zxing库,您可以按照以下步骤进行操作: 1. 下载zxing库:首先,您需要从zxing的官方GitHub仓库下载zxing库的源代码。您可以通过访问https://github.com/zxing/zxing,然后选择“Code”按钮并下载ZIP文件来获取最新版本的源代码。 2. 创建Qt项目:打开Qt Creator并创建一个新的Qt项目。选择“File” -> “New File or Project” -> “Qt Widgets Application”,然后按照向导的指示进行操作。 3. 导入zxing库:将下载的zxing源代码解压缩到您的项目文件夹中。然后,右键单击Qt Creator中的项目文件,选择“Add Existing Directory”,并选择解压缩的zxing文件夹。 4. 配置项目文件:在Qt Creator中打开项目文件(通常是以`.pro`为扩展名的文件),将以下行添加到文件底部: ```qmake INCLUDEPATH += zxing/core/src ``` 这将确保编译器能够找到zxing库的头文件。 5. 添加zxing代码:在Qt Creator中创建一个新的源代码文件(例如`zxingwrapper.cpp`),并将以下示例代码添加到文件中: ```cpp #include <zxing/core/src/zxing/BarcodeFormat.h> #include <zxing/core/src/zxing/MultiFormatReader.h> QString decodeQRCode(const QString& imagePath) { zxing::Ref<zxing::LuminanceSource> source = zxing::ImageReaderSource::create(imagePath.toStdString()); zxing::Ref<zxing::BinaryBitmap> bitmap = zxing::Ref<zxing::BinaryBitmap>(new zxing::BinaryBitmap(zxing::HybridBinarizer(source))); zxing::DecodeHints hints; hints.setTryHarder(true); zxing::Ref<zxing::Result> result = zxing::MultiFormatReader().decode(bitmap, hints); return QString::fromStdString(result->getText()->getText()); } ``` 这个示例代码使用zxing库来解码QR码图像。您可以根据自己的需要进行修改和扩展。 6. 使用zxing库:在您的Qt项目中的适当位置调用`decodeQRCode`函数,传递QR码图像的路径作为参数。函数将返回解码后的文本。 这只是一个简单的示例,您可以根据自己的需求进行更多的定制和扩展。希望这些步骤能够帮助您在Qt中成功使用zxing库!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值