Qt 二维码生成与识别

news/2025/2/23 16:23:31

1.简介

QZXing是一个基于Qt框架的二维码解码库,它是对ZXing(Zebra Crossing)开源项目的一个Qt封装。ZXing是一个功能强大的开源二维码解码库,支持多种类型的码,包括QR码、DataMatrix码、Aztec码等。 QZXing提供了一个Qt插件,可以方便地在Qt应用程序中使用二维码解码功能。它可以在不同版本的Qt上运行,并提供了几种使用方式,包括直接解码图像、解码文件、解码摄像头捕获的图像等。使用QZXing可以轻松地将二维码解码功能集成到Qt应用程序中,实现扫描和解析二维码的功能。

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

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

QZXing的下载地址:https://github.com/ftylitak/qzx

QZXing支持以下类型的条形码解码:

  • UPC-A
  • UPC-E
  • EAN-8
  • EAN-13
  • ITF
  • Code 39
  • Code 93
  • Code 128 (GS1)
  • Codabar
  • QR Code
  • Data Matrix
  • Aztec (beta)
  • PDF 417

支持以下类型的编码:

  • QR Code

2.编译

下载并解压,解压之后如图所示

编译:用qtcreator打开打开src里面的QZXing.pro文件。

直接编译,生成库文件,这里我使用的MinGW的编译器。

3.配置

配置: 新建thirdPart目录,新建测试工程目录QzxingTest。

进入到thirdPart目录下,创建qzxing目录,如下图所示,将编译好的库拷贝到如下图所示目录中,

将源码目录下QZXing.h、QZXing_global.h文件,拷贝到include目录下。

 

在QzxingTest工程的pro文件中,添加如下代码。

QMAKE_LIBDIR += $$PWD/../thirdPart/qzxing/

INCLUDEPATH += $$PWD/../thirdPart/qzxing/include

LIBS += -lQZXing3

4.示例

二维码识别和编码

decode代码:

void MainWindow::on_btnDecode_clicked()
{
    QImage imageToDecode("F:/private/QzxingTest/qr_wechat.png");
    QZXing decoder;
        //mandatory settings
    decoder.setDecoder( QZXing::DecoderFormat_QR_CODE | QZXing::DecoderFormat_EAN_13 );

    //optional settings
    //decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal | QZXing::SourceFilter_ImageInverted);
    decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal);
    decoder.setTryHarderBehaviour(QZXing::TryHarderBehaviour_ThoroughScanning | QZXing::TryHarderBehaviour_Rotate);

    //trigger decode
    QString result = decoder.decodeImage(imageToDecode);

    ui->textEditOut->setText(result);
}

encode代码:

    QString text = ui->textEditIn->toPlainText();
    if(text.isEmpty())
       return;
    QImage img = QZXing::encodeData(text
                                   ,QZXing::EncoderFormat::EncoderFormat_QR_CODE
                                   ,QSize(200,200)
                                   ,QZXing::EncodeErrorCorrectionLevel::EncodeErrorCorrectionLevel_H
                                   ,true
                                   ,false);
    ui->labelOut->setPixmap(QPixmap::fromImage(img));

要使用encode功能,需要pro文件加上宏定义:

DEFINES += QT_DEPRECATED_WARNINGS \
            ENABLE_ENCODER_GENERIC

5.相关推荐

Qt 使用QtXlsx操作Excel表_qtxlsxwriter-CSDN博客

Qt 使用Quazip解压缩、压缩文件-CSDN博客

 QCustomplot详解_qcustomplot中rescαlerαxis的作用_Mr.codeee的博客-CSDN博客


http://www.niftyadmin.cn/n/5166540.html

相关文章

用于汽车主驱逆变器的NVVR26A120M1WST、NVVR26A120M1WSS、NVVR26A120M1WSB 1200V、碳化硅(SiC)模块

碳化硅(SiC)模块 – EliteSiC主驱逆变器功率模块 1200V,半桥,介绍 1、(NVVR26A120M1WST)功率模块是用于混合动力车(HEV)和电动车(EV)主驱逆变器应用的VE-Tra…

BIM、建筑机器人、隧道工程施工关键技术

一、BIM简介 (一)BIM概念 BIM(Building Information Modeling),建筑信息模型。该技术通过数字化手段,在计算机中建立虚拟建筑,该虚拟建筑提供从单一到完整、包含逻辑关系的建筑信息库。信息库…

Go语言~反射

reflect包 type name和type kindValueOf通过反射获取值通过反射设置变量的值 package mainimport ("fmt""reflect" )func reflectType(x interface{}) {obj : reflect.TypeOf(x)fmt.Println(obj, obj.Name(), obj.Kind())fmt.Printf("obj type of %…

ES集群知识

ES集群知识 核心概念 Cluster:集群,包含一个或多个 Elasticsearch 节点组成。 Node:节点,组成 Elasticsearch 集群的服务单元,同一个集群内节点的名字不能重复。通常在一个节点上分配一个或者多个分片。 Shards&…

电脑msvcp110.dll丢失怎么办,msvcp110.dll缺失的详细修复步骤

在现代科技发展的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,由于各种原因,电脑可能会出现一些问题,其中之一就是msvcp110.dll文件丢失。这个问题可能会导致一些应用程序无法正常运行,给我们的生活和工作…

文献管理软件Zotero之插件篇(3)

文章目录 0、前言1、插件获取方式1.1、[官网下载](https://www.zotero.org/support/plugins)1.2、[Zotero中文社区插件页下载](https://plugins.zotero-chinese.com/)1.3、[Github](https://github.com)或[Gitee](https://gitee.com)平台下载 2、常用插件2.1、Zotero Connector…

RDMA抓包

拉取容器: docker pull mellanox/tcpdump-rdma 启动容器 docker run -it -v /dev/infiniband:/dev/infiniband -v /tmp/traces:/tmp/traces --nethost --privileged mellanox/tcpdump-rdma 进入mellanox/tcpdump-rdma bash之后,运行以下命令。 3、开始捕…

ARMday2(环境创建+工程配置+创建文件+单步调试)

目录 一、汇编环境的创建 二、为工程配置链接脚本(map.lds) 三、为工程创建汇编文件 start.s 编程调试 接下来我们需要建立一个 start.s 汇编文件添加到我们的工程中去 四、对汇编代码进行单步调试(仿真) 五、汇编工程的编译 …