一、前言

本文主要讲解一维码生成的相关知识,并提供zint库编译源码(支持Windows和Linux),以及一个简单运用的Demo

二、相关知识

zint是一维码生成库,可以生成code39,code11,code128,ean13等,运用场景如超市扫描枪,书本条形码等。

zint库需依赖于zlib、libpng这两个库,所以一共需编译三个库,依赖关系如下图。


所以编译先后顺序为:zlib、libpng、zint,因为编译涉及很多文件的修改和包含关系等,并且源码不完全兼容,需修改,这里不详述。

①zlib库需要编译的文件如下:

SOURCES += \libfile/zutil.c \libfile/uncompr.c \libfile/trees.c \libfile/inftrees.c \libfile/inflate.c \libfile/inffast.c \libfile/infback.c \libfile/gzwrite.c \libfile/gzread.c \libfile/gzlib.c \libfile/gzclose.c \libfile/deflate.c \libfile/crc32.c \libfile/compress.c \libfile/adler32.cHEADERS += \libfile/zutil.h \libfile/zlib.h \libfile/zconf.h \libfile/trees.h \libfile/inftrees.h \libfile/inflate.h \libfile/inffixed.h \libfile/inffast.h \libfile/gzguts.h \libfile/deflate.h \libfile/crc32.h

②libpng库需要编译的文件如下:

#依赖库,按照你自己的路径改
CONFIG(release, debug|release){LIBS += -L$$OUT_PWD/../release/ -lzlib
} else: CONFIG(debug, debug|release) {LIBS += -L$$OUT_PWD/../debug/ -lzlib
}HEADERS += \libfile/pngstruct.h \libfile/pngpriv.h \libfile/pnginfo.h \libfile/pngdebug.h \libfile/pngconf.h \libfile/png.h \libfile/pnglibconf.h \libfile/zlib.h \libfile/zconf.hSOURCES += \libfile/pngwutil.c \libfile/pngwtran.c \libfile/pngwrite.c \libfile/pngwio.c \libfile/pngtrans.c \libfile/pngtest.c \libfile/pngset.c \libfile/pngrtran.c \libfile/pngrio.c \libfile/pngread.c \libfile/pngpread.c \libfile/pngmem.c \libfile/pngget.c \libfile/pngerror.c \libfile/png.c \libfile/example.c \libfile/pngrutil.c

③zint库需要编译的文件如下:

#依赖库,按照你自己的路径改
CONFIG(release, debug|release){LIBS += \-L$$OUT_PWD/../release/ -lzlib \-L$$OUT_PWD/../release/ -llibpng
} else: CONFIG(debug, debug|release) {LIBS += \-L$$OUT_PWD/../debug/ -lzlib \-L$$OUT_PWD/../debug/ -llibpng
}HEADERS += \libfile/png.h \libfile/zlib.h \libfile/pngconf.h \libfile/pnglibconf.h \libfile/zconf.h \libfile/zint.h \libfile/stdint_msvc.h \libfile/sjis.h \libfile/rss.h \libfile/reedsol.h \libfile/qr.h \libfile/pdf417.h \libfile/pcx.h \libfile/ms_stdint.h \libfile/maxicode.h \libfile/large.h \libfile/hanxin.h \libfile/gs1.h \libfile/gridmtx.h \libfile/gb18030.h \libfile/gb2312.h \libfile/font.h \libfile/eci.h \libfile/dmatrix.h \libfile/composite.h \libfile/common.h \libfile/code49.h \libfile/code1.h \libfile/bmp.h \libfile/aztec.hSOURCES += \libfile/upcean.c \libfile/telepen.c \libfile/svg.c \libfile/rss.c \libfile/render.c \libfile/reedsol.c \libfile/png.c \libfile/raster.c \libfile/qr.c \libfile/ps.c \libfile/postal.c \libfile/plessey.c \libfile/pdf417.c \libfile/pcx.c \libfile/medical.c \libfile/maxicode.c \libfile/library.c \libfile/large.c \libfile/imail.c \libfile/hanxin.c \libfile/gs1.c \libfile/gridmtx.c \libfile/gif.c \libfile/eci.c \libfile/dotcode.c \libfile/dmatrix.c \libfile/dllversion.c \libfile/composite.c \libfile/common.c \libfile/code128.c \libfile/code49.c \libfile/code16k.c \libfile/code1.c \libfile/code.c \libfile/codablock.c \libfile/bmp.c \libfile/aztec.c \libfile/auspost.c \libfile/2of5.cOTHER_FILES += \libfile/LICENSE

我这里建议整一个工程,按顺序编译zlib、libpng、zint库,我自己写的zint库编译源码也是这么做的(后面有链接下载),要注意各个库的生成和使用路径。


④使用方法

将zint里的zint.h文件拷贝到(需使用zint库的)工程中,在.pro工程文件加入相关库,并把zlib/libpng/zint库放到exe运行目录下。

#路径改你自己的
LIBS += \-L$$OUT_PWD/./debug/ -lzlib \-L$$OUT_PWD/./debug/ -llibpng \-L$$OUT_PWD/./debug/ -lzint \
//加入头文件
HEADERS  += zint.h


⑤一维码解析(支持一维码二维码解析)

《QT二维码生成和解析&Demo》

三、效果展示

四、源码(使用)简析

void MainWindow::on_pushButton_generate_clicked()
{//保存图片的路径QString strImagePath = QCoreApplication::applicationDirPath() + "//barcode.png";if(!ui->lineEdit->text().isEmpty()){//设置生成一维码的属性,我这里是CODE128码,可根据需要自行修改struct zint_symbol * my_symbol = ZBarcode_Create();my_symbol->symbology=BARCODE_CODE128;strcpy(my_symbol->outfile, strImagePath.toStdString().c_str());//完成一维码制作并保存ZBarcode_Encode(my_symbol,(unsigned char*)ui->lineEdit->text().toStdString().c_str(),0);ZBarcode_Print(my_symbol,0); //这个0是旋转角度ZBarcode_Delete(my_symbol);//在label上显示一维码图片QImage img;img.load(strImagePath.toStdString().c_str());QImage newImg = img.scaled(ui->label->width(),ui->label->height(), Qt::IgnoreAspectRatio);ui->label->setPixmap(QPixmap::fromImage(newImg));}else{QMessageBox::information(this, "Warning", "lineEdit is empty!", QMessageBox::Ok);}
}

五、源码Demo

①zint/zinb/libpng原生开源库(未经处理):

链接:https://pan.baidu.com/s/1QNAi77hMml0_1LXRVp-2BA
提取码:6ewn

②QT zint库编译源码(已处理,工程支持Windous/Linux自编,纯源码)

zint编译源码超链接

③zint库使用案例Demo

链接:https://pan.baidu.com/s/18caWAqaC05-hXuVDitzZXg
提取码:ldvl

QT zint一维码生成解析相关推荐

  1. [开源]C#二维码生成解析工具,可添加自定义Logo

    原文:[开源]C#二维码生成解析工具,可添加自定义Logo 二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Co ...

  2. VS+QT——二维码生成(使用nayuki第三方库):从建工程开始

    本文总结一下最近实现的小软件,二维码生成器.通过nayuki第三方库,生成一个QImage类型的二维码,再将二维码显示到对应控件上.本文参考博客:SorelCheung :Qt生成二维码. 附代码:h ...

  3. android一维码生成,用android生成一维条码

    嘿,这里有很多关于阅读条码的帖子,但我想从一串数字生成条码,并在我的应用程序中向用户显示生成的条码. 我看了几个库iTextPdf和烧烤,特别是我一直试图与iTextPdf用android生成一维条码 ...

  4. QT实现一维码识别之Code128

    一.简介:Code128码的编码方式属于比较复杂的一种条码,应用起来比较灵活,在1981年开始流行起来. 二.Code128码的特点如下: 1.有A.B.C三种不同的编码方式,可以提供128个标准的A ...

  5. Qt识别一维码、二维码软件分享

    一.效果展示 二.实现方案 识别主要通过qzxing库来识别,库的下载和编译百度一下. 三.实现源码 mainwindow.h #ifndef MAINWINDOW_H #define MAINWIN ...

  6. Qt zint (生成一维码/二维码)

    zint 编译 源码添加到工程 生成一维码 生成DM码 DM码识别 下载源码1: (笔者下载最新的zint-master.zip(20210126),不清楚是不是官方维护的github仓库) http ...

  7. SpringBoot生成条形码(一维码)

    这是方法调用: BarCodeUtil.encode("2020042312251234"); 下面是工具类BarCodeUtil.java package com.fc.test ...

  8. JAVA基础--QR_Code二维码生成

    2019独角兽企业重金招聘Python工程师标准>>> 项目中我们经常会用到二维码,今天就来讲讲二维码的生成: 1, 二维码的概念:            二维条码/二维码(2-di ...

  9. springBoot二维码生成案例

    1.首先引入谷歌开源项目依赖: <!-- 二维码支持包 --> <dependency><groupId>com.google.zxing</groupId& ...

最新文章

  1. python 单元测试_聊聊 Python 的单元测试框架(一):unittest
  2. 网站提示java已被阻止_Win7系统下打开网页提示应用程序已被JAVA安全阻止
  3. VC调用外部程序接口
  4. 小鼠皮肤组织细胞悬液制备流程
  5. 你真的了解 Cookie 和 Session 吗?
  6. C#中静态方法和非静态方法的区别
  7. [剑指offer][JAVA]面试题第[18]题[删除链表的节点]
  8. 95-10-035-启动-Metrics
  9. js 生成二维码_js 生成二维码
  10. 编程笔记:python 中的 OrderedDict
  11. 技术篇-HBase Coprocessor 的实现与应用
  12. haproxy + keepalived 使用 kubeadm 部署高可用Kubernetes 集群
  13. android 带边框的arc,极细边框(1px边框)实现方式
  14. java塔防兽人种族_兽人TD1.09下载
  15. SPACEMACS 配置
  16. 百合网创始人慕岩:煽情类广告效果最好 最看不上的商业模式最赚钱
  17. deepin 开启root权限
  18. 电脑文件怎么加密?第一种方法最简单
  19. 云脉相册管理,检索轻松便捷
  20. 如何像伟大的企业家一样写作

热门文章

  1. 如何设置透明色RGB值
  2. 案例35:基于Springboot图书商城管理系统开题报告设计
  3. JavaScript中的排序算法
  4. 计算机技术小学语文教学,如何进行小学语文教学与信息技术的整合
  5. python和javascript哪个好_python和JavaScript哪个容易上手
  6. Window批量删除文件名前缀
  7. 【收藏+原创】商业网站
  8. 华为服务器系统图标,云服务器的图标
  9. 王者荣耀服务器1月27日维护,向团聚出发!《2019王者耀新春》1月27日全网直播...
  10. 选择虚拟主机时需要考虑的因素