当前位置: 首页 > news >正文

Qt 二维码生成与识别

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/includeLIBS += -lQZXing3

4.示例

二维码识别和编码

decode代码:

void MainWindow::on_btnDecode_clicked()
{QImage imageToDecode("F:/private/QzxingTest/qr_wechat.png");QZXing decoder;//mandatory settingsdecoder.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 decodeQString 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.lryc.cn/news/222398.html

相关文章:

  • jacoco和sonar
  • Django系列之Serializer的source参数使用、自定义序列化方法
  • Java从入门到精通
  • 电路布线问题动态规划详解(做题思路)
  • webpack 的 Loader 和 Plugin 的区别,常见的 loader 和 plugin 有哪些?
  • 云计算实战项目之---学之思在线考试系统
  • 研究生学术与职业素养讲座MOOC---期末复习(1-15)
  • kube-prometheus-stack监控k8s1.24+ docker缺少图像
  • 【C/PTA——循环结构3】
  • MAC设备(M1)环境下编译安装openCV for Java
  • pytest中的pytest.ini
  • C#通过TCP发送List<string>
  • Mactracker for mac(硬件信息查询工具)免费下载
  • MES管理系统中常规的生产建模有哪些
  • 电商API:淘宝京东拼多多1688多电商平台的商品销量库存信息获取
  • EPLAN软件中的术语-主数据‘’技术分享
  • web应用程序、Django框架的学习
  • 【c++之设计模式】组合使用:抽象工厂模式与单例模式
  • Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版
  • seata事务回滚引起的skywalking数据库存储空间剧增的问题排查
  • 数据库SQL
  • C语言实现给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
  • 101 对称二叉树
  • 安全测试,接口返回内容遍历~
  • 【GIS】地理坐标系与投影坐标系的区别
  • 太细了:美团一面连环夺命20问,搞定就60W起
  • 休眠和睡眠有哪些区别?如何让电脑一键休眠?
  • Kibana使用Timelion根据时间序列展示数据
  • 基础:JavaScript的怪癖之一:提升(Hoisting)
  • 前端特殊字符转码