zint

  • 编译
  • 源码添加到工程
  • 生成一维码
  • 生成DM码
  • DM码识别

下载源码1: (笔者下载最新的zint-master.zip(20210126),不清楚是不是官方维护的github仓库)
https://github.com/woo-j/zint

下载源码2: (最后zint-2.9.1,生成DM码黑白之间会有一条灰色线,没去掉,只能使用最新的zint-master)
https://sourceforge.net/projects/zint/files/zint/

我没用 zlib
https://zlib.net/fossils/
我没用 libpng
https://sourceforge.net/projects/libpng/files/libpng16/

编译

编译?不存在的,对于源代码少的开源项目都是加入源代码,简单粗暴

源码添加到工程

按选中的文件摆放文件目录,忽视未选中的文件,那那是为编译静态库,动态库写的,这里不讲

backend_qt.pri


INCLUDEPATH += $$PWD/backendDEFINES += ZINT_VERSION="\\\"2.9.1\\\""DEFINES += NO_PNG!contains(DEFINES, NO_PNG) {INCLUDEPATH += ../../lpngINCLUDEPATH += ../../zlib
}contains(DEFINES, QR_SYSTEM){LIBS += -lqrencode
}contains(DEFINES, QR){INCLUDEPATH += qrencodeHEADERS += qrencode/bitstream.h \qrencode/mask.h \qrencode/qrencode.h \qrencode/qrencode_inner.h \qrencode/qrinput.h \qrencode/qrspec.h \qrencode/rscode.h \qrencode/split.h SOURCES += qrencode/bitstream.c \qrencode/mask.c \qrencode/qrencode.c \qrencode/qrinput.c \qrencode/qrspec.c \qrencode/rscode.c \qrencode/split.c
}HEADERS +=  $$PWD/backend/aztec.h \$$PWD/backend/bmp.h \$$PWD/backend/channel_precalcs.h \$$PWD/backend/code128.h \$$PWD/backend/code49.h \$$PWD/backend/common.h \$$PWD/backend/composite.h \$$PWD/backend/dmatrix.h \$$PWD/backend/eci.h \$$PWD/backend/font.h \$$PWD/backend/gb18030.h \$$PWD/backend/gb2312.h \$$PWD/backend/gridmtx.h \$$PWD/backend/gs1.h \$$PWD/backend/hanxin.h \$$PWD/backend/large.h \$$PWD/backend/maxicode.h \$$PWD/backend/output.h \$$PWD/backend/pcx.h \$$PWD/backend/pdf417.h \$$PWD/backend/reedsol.h \$$PWD/backend/rss.h \$$PWD/backend/sjis.h \$$PWD/backend/stdint_msvc.h \$$PWD/backend/zint.h \$$PWD/qzint.hSOURCES += $$PWD/backend/2of5.c \$$PWD/backend/auspost.c \$$PWD/backend/aztec.c \$$PWD/backend/bmp.c \$$PWD/backend/codablock.c \$$PWD/backend/code.c \$$PWD/backend/code128.c \$$PWD/backend/code16k.c \$$PWD/backend/code49.c \$$PWD/backend/common.c \$$PWD/backend/composite.c \$$PWD/backend/dmatrix.c \$$PWD/backend/dotcode.c \$$PWD/backend/eci.c \$$PWD/backend/emf.c \$$PWD/backend/gb18030.c \$$PWD/backend/gb2312.c \$$PWD/backend/general_field.c \$$PWD/backend/gif.c \$$PWD/backend/gridmtx.c \$$PWD/backend/gs1.c \$$PWD/backend/hanxin.c \$$PWD/backend/imail.c \$$PWD/backend/large.c \$$PWD/backend/library.c \$$PWD/backend/mailmark.c \$$PWD/backend/maxicode.c \$$PWD/backend/medical.c \$$PWD/backend/output.c \$$PWD/backend/pcx.c \$$PWD/backend/pdf417.c \$$PWD/backend/plessey.c \$$PWD/backend/postal.c \$$PWD/backend/ps.c \$$PWD/backend/raster.c \$$PWD/backend/reedsol.c \$$PWD/backend/rss.c \$$PWD/backend/sjis.c \$$PWD/backend/svg.c \$$PWD/backend/telepen.c \$$PWD/backend/tif.c \$$PWD/backend/ultra.c \$$PWD/backend/upcean.c \$$PWD/backend/vector.c \$$PWD/backend/qr.c \$$PWD/backend/dllversion.c \$$PWD/backend/code1.c \$$PWD/backend/png.c \$$PWD/qzint.cppVERSION = 2.9.1

使用直接在.pro中添加

include($$PWD/zint-2.9.1/backend_qt/backend_qt.pri);

生成一维码

#include "zint-2.9.1/backend_qt/qzint.h"
void QRcodeDialog::on_pushButton_barCode_clicked()
{Zint::QZint bc;Zint::QZint::AspectRatioMode ar = Zint::QZint::KeepAspectRatio;//initbc.setSymbol(BARCODE_CODE128);//BARCODE_QRCODE二维码bc.setSecurityLevel(0);//一维码内容bc.setText(ui->textEdit_barCode->toPlainText());//绘制一维码QImage image(ui->label_barCode->size(),QImage::Format_RGB32);QPainter painter(&image);bc.render(painter,image.rect(),ar);ui->label_barCode->setPixmap(QPixmap::fromImage(image));
}

默认条形码的文字是在下面的

可以通过修改

效果

生成DM码

#include "zint-2.9.1/backend_qt/qzint.h"/** 创建 DM 二维码* @brief QRcodeDialog::createDMCode* @param text* @param size  二维码尺寸* @param penWidth 画笔宽度* @return*/
QImage  QRcodeDialog::createDMCode(const QSize &size,const QString &text,int penWidth) const
{Zint::QZint bc;Zint::QZint::AspectRatioMode ar = Zint::QZint::KeepAspectRatio;//IgnoreAspectRatio,KeepAspectRatio//initbc.setSymbol(BARCODE_DATAMATRIX);//BARCODE_QRCODE二维码bc.setBorderWidth(0);bc.setBgColor(QColor(255,255,255,255));bc.setText(text);QImage image(size,QImage::Format_RGB32);QPainter painter(&image);painter.fillRect(image.rect(),Qt::white);//绘制黑色外壳painter.setPen(QPen(QColor(0,0,0,255),penWidth,Qt::SolidLine,Qt::FlatCap,Qt::MiterJoin));QRect rect1(penWidth/2,penWidth/2,image.rect().width()-penWidth,image.rect().height()-penWidth);painter.drawRect(rect1);//二维码绘制区域, 外壳和二维码绘制中空余了白色的边框penWidth = penWidth + penWidth ;QRect rect2(penWidth,penWidth,image.rect().width()-penWidth*2,image.rect().height()-penWidth*2);bc.render(painter,rect2,0,ar);return image;
}


把上面的 bc.setSymbol(BARCODE_DATAMATRIX); 换成 BARCODE_QRCODE 就是我们常用的二维码,用微信可以扫出字符

DM码识别

https://blog.csdn.net/u012020854/article/details/113182386

Qt zint (生成一维码/二维码)相关推荐

  1. Qt编写项目作品26-一维码二维码解析及生成

    一.功能特点 支持本地USB摄像头实时解析. 支持网络视频流实时解析. 解码格式支持一维码二维码等各种编码. 可生成一维码二维码,一维码支持EAN_13格式,其他格式可定制. 条形码参数支持宽度.高度 ...

  2. Zxing和QR CODE 生成与解析二维码实例(普通篇)

    首先下载对应的jar包,本实例用的是Zxing2.2jar 下载地址:http://download.csdn.net/detail/gao36951/8161861 Zxing是Google提供的关 ...

  3. STM32F407获取OV7670摄像头图像及上位机解码(一维码二维码)

    STM32F407获取OV7670摄像头图像及上位机解码(一维码&二维码) 1. 目的 针对静止拍摄图像场景,实现STM32F407对30万像素OV7670摄像头进行图像捕获,并通过串口将数据 ...

  4. halcon视觉 一维、二维码的区别-@龙熙视觉培训李杰

    一维码(条形码) 一维条码即指条码条和空的排列规则,常用的一维码的码制包括:EAN码.39码.交叉25码.UPC码.128码.93码,ISBN码,及Codabar(库德巴码)等. 条码是由一组规则排列 ...

  5. 前端条码打印方案(表格+中文+一维码+二维码)

    前言 条码打印不同于普通打印机,条码大小各不相同,需要针对不同标签贴纸开发不同的样式 1. 条码打印的两种方案: 后端ZPL指令打印 前端调用浏览器打印 2. 优缺点分析: 优点 缺点 后端ZPL指令 ...

  6. 智沃邦条码扫码出入库管理系统 仓库出入库管理系统 一维码 二维码系统

    智沃邦条码出入库管理系统,将普通的商品进行重新编码,并自动生成的一维码或者二维码,通过扫描器进行扫描操作,实现商品的出入库业务.本系统由西安智沃邦信息科技有限公司开发. 一.系统简介: 1.本系统可以 ...

  7. 碎步二:zxing核心包生成条形码和二维码

    最近闲得无趣,于是写点技术知识放到博客上,希望以后对自己有所帮助.随着时代的发展,二维码已经悄悄的被时代所认可,不管是个人或者公司,二维码受到很多人的认可,如今在互联网上二维码几乎随处可见.废话不多说 ...

  8. C#利用ZXing.Net生成条形码,二维码和带Logo的二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  9. C# 利用ZXing.Net来生成条形码和二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  10. STM32H750获取OV5640摄像头图像及上位机解码(一维码二维码)

    STM32H750获取OV5640摄像头图像及上位机解码(一维码&二维码) 1. 目的 针对静止拍摄图像场景,实现STM32H750对500万像素OV5640摄像头进行图像捕获,并通过串口将数 ...

最新文章

  1. 移植 thttpd Web服务器
  2. 面试题:冒泡排序的优化
  3. 482. License Key Formatting
  4. python 多进程全局变量
  5. localBlock在java_将java.util.Date转换为java.time.LocalDate
  6. python实现程序安装_使用python实现对windows软件包的安装和卸载
  7. 文件内容查看---Linux
  8. 软硬件负载均衡器:F5、Array、Nginx、LVS、HAProxy
  9. 【NCRE】——Winform窗体控件随窗体大小而变化
  10. Atitit 容器化技术之道 attilax著 1. 概念 1 1.1. 容器是应用服务器中位于组件和平台之间的接口集合。 1 1.2. 有时候也指集合的概念,里面可以存放不同对象 2 1.3. 、新
  11. 一文搞懂DTFT,DFT,FFT
  12. 华为手机怎么移除云盘内容_华为手机网盘怎么样删除
  13. IPV4内网地址网段
  14. Dell台式计算机BIOS放电,戴尔bios设置电池修复 笔记本电脑电池bios设置图解方法...
  15. 百度快排点击软件-搜索引擎排名模拟点击器-快排点击软件
  16. 第939期机器学习日报(2017-04-14)
  17. ChatGPT在智能客服产品落地探讨
  18. FTP服务搭建与配置
  19. 虚拟主机服务器放在哪里,云虚拟主机的目录在哪里
  20. FeignClient调用 Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token to

热门文章

  1. JAVA高级工程师课程笔记整理——(六)网页三剑客
  2. 谁来挑战中国跳水梦之队 金童功力几何黑马潜伏
  3. mysql查看某一库的collae,2021年智慧职教MySQL数据库应用单元测试答案
  4. 软考高级-考试细节与学习计划篇
  5. 概率等于1一定是必然事件吗?/概率为0的事件未必是不可能事件?
  6. notifyDataSetChanged()不起作用问题分析补充
  7. uefi下的开机顺序_怎么设置uefi启动顺序
  8. summary for matplotlib(cord in python)
  9. VINF_FUSION编译出现大量的error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope错误
  10. 南大计算机生物信息学,机器学习与数据挖掘-南京大学计算机系.PDF