QZXing二维码库使用完全指南

QZXing二维码库使用完全指南

【免费下载链接】qzxing Qt/QML wrapper library for the ZXing library. 1D/2D barcode image processing library 【免费下载链接】qzxing 项目地址: https://gitcode.com/gh_mirrors/qz/qzxing

QZXing是一个基于Qt/QML的二维码处理库,它为著名的ZXing图像处理库提供了便捷的封装接口,支持一维码和二维码的快速解码与编码功能。该库设计精巧,分为不同的依赖层级,能够满足从核心功能到QML交互的各种需求。

项目概述与核心特性

QZXing库专注于为Qt开发者提供简单高效的二维码处理解决方案。通过集成QtCore和QtGui模块,确保了基础的图像处理能力,同时也考虑到了向后兼容性,提供了对Quick的支持。

支持的解码格式:

  • 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

项目集成与配置

获取项目源码

首先克隆项目到本地:

git clone https://gitcode.com/gh_mirrors/qz/qzxing

集成方式选择

QZXing提供两种集成方式:

1. 源码集成方式 将QZXing源代码文件夹复制到项目根目录,在.pro文件中添加:

include(QZXing/QZXing.pri)

2. 外部库编译方式 打开QZXing项目(QZXing.pro)并编译。如需编译为静态库,在.pro文件中取消注释:

CONFIG += staticlib

依赖控制配置

项目支持三个级别的依赖配置:

核心功能 (QZXing core) 仅需要QtCore和QtGui模块,提供基本的二维码处理能力。

核心 + QML功能 如需使用QML功能,在.pro文件中添加:

CONFIG += qzxing_qml

QZXingFilter多媒体支持 提供实时视频流解码功能,需要多媒体模块:

CONFIG += qzxing_multimedia

核心功能使用详解

解码操作

C++/Qt使用示例:

#include "QZXing.h"

int main()
{
    QImage imageToDecode("file.png");
    QZXing decoder;
    decoder.setDecoder(DecoderFormat_QR_CODE | DecoderFormat_EAN_13);
    
    // 可选设置
    decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal);
    decoder.setTryHarderBehaviour(QZXing::TryHarderBehaviour_ThoroughScanning | QZXing::TryHarderBehaviour_Rotate);
    
    QString result = decoder.decodeImage(imageToDecode);
}

Qt Quick使用示例: 首先在C++中注册QML类型:

#include "QZXing.h"

int main()
{
    ...
    QZXing::registerQMLTypes();
    ...
}

然后在QML文件中使用:

import QZXing 3.3

function decode(preview) {
    imageToDecode.source = preview
    decoder.decodeImageQML(imageToDecode);
}

Image{
    id:imageToDecode
}

QZXing{
    id: decoder
    enabledDecoders: QZXing.DecoderFormat_QR_CODE
    
    onDecodingStarted: console.log("Decoding of image started...")
    onTagFound: console.log("Barcode data: " + tag)
    onDecodingFinished: console.log("Decoding finished " + (succeeded==true ? "successfully" : "unsuccessfully"))
}

编码操作

启用编码功能: 如果使用QZXing.pri,编码功能已自动启用。如果使用QZXing-components.pri,需在.pro文件中添加:

CONFIG += enable_encoder_qr_code
include(QZXing/QZXing-components.pri)

C++/Qt编码示例:

#include "QZXing.h"

int main()
{
    QString data = "text to be encoded";
    QImage barcode = QZXing::encodeData(data);
}

自定义编码设置:

QString data = "text to be encoded";
QImage barcode = QZXing::encodeData(data, QZXing::EncoderFormat_QR_CODE,
                            QSize(width.toInt(), height.toInt()), QZXing::EncodeErrorCorrectionLevel_H);

Qt Quick编码示例: 首先注册图像提供者:

QQmlApplicationEngine engine;
QZXing::registerQMLTypes();
QZXing::registerQMLImageProvider(engine);

默认设置使用:

import QZXing 3.3

TextField {
    id: inputField
    text: "Hello world!"
}

Image{
    source: "image://QZXing/encode/" + inputField.text;
    cache: false;
}

自定义设置使用:

import QZXing 3.3

TextField {
    id: inputField
    text: "Hello world!"
}

Image{
    source: "image://QZXing/encode/" + inputField.text +
                    "?correctionLevel=M" +
                    "&format=qrcode"
    sourceSize.width: 320
    sourceSize.height: 320
}

实际应用场景

实时扫码应用

在移动或桌面应用中,利用QZXing结合摄像头功能,实现即时二维码扫描,优化用户体验。建议采用非阻塞方式处理解码任务,确保UI的流畅性。

数据采集自动化

在仓储管理、票务系统等场景中,QZXing可以作为读取商品条码或电子票据的关键技术,快速接入数据库系统。

示例项目说明

项目提供了多个示例应用,包括:

  • QZXingLive:实时摄像头二维码扫描应用
  • BarcodeEncoder:二维码生成器应用
  • QMLBarcodeScanner:QML条码扫描器
  • QZXingDragNDropTest:拖放解码测试应用

项目图标

性能优化建议

  • 采用异步处理机制避免界面卡顿
  • 合理设置图像预处理参数
  • 优化内存使用,提升处理效率
  • 根据具体需求选择合适的解码格式

通过本指南,您已经掌握了QZXing库的核心使用方法。这个强大的二维码处理工具能够帮助您在Qt项目中快速集成专业的二维码扫描和生成功能。

【免费下载链接】qzxing Qt/QML wrapper library for the ZXing library. 1D/2D barcode image processing library 【免费下载链接】qzxing 项目地址: https://gitcode.com/gh_mirrors/qz/qzxing

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值