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

c++ zint二维码、条形码开发库

zint 是一个开源的条码编码库,它支持超过50种条码,包括 Code-128, Data Matrix, EAN-128, UPC/EAN, ITF, QR Code, Code 16k, PDF417, MicroPDF417, LOGMARS, Maxicode, GS1 DataBar, Aztec, Composite Symbols 等等,基本上你见过的条码都能用它来进行编码,它支持直接输出 PNG 格式的图像文件和位图的字节数组。

本人就zint封装以下接口,更容易使用:

#pragma once

#include "TypeDef.h"

class COMMONMDBENGINE_DLL_CLASS BarcodeUtil
{
public:
    
    BarcodeUtil();

    ~BarcodeUtil();

    void CreatInstance();

    void setSymbology(Symbology symbology);

    // 设置文本
    void setContent(const std::string& content);

    //高度
    void setWidth(int width);

    //高度
    void setHeight(float height);

    //条形码尺寸的缩放因子
    void setScale(float scale);

    //边框的宽度
    void setBorderWidth(int width);

    // 编码内容并生成位图数据 (返回 RGB 数据或其他格式)
    std::vector<unsigned char> generateBarcodeBitmap(const std::string& content);

    // 将条码保存为图片文件 (需要实现,可能依赖其他库如 libpng)
    bool saveToFile(const std::string& filename, int dpi = 72); // PNG 格式

    //条码前景颜色,格式为RGB16进制的字符串,例如,绿色“00FF00
    void setfgcolour(const std::string& strfgcolour);

    void setbgcolour(const std::string& strbgcolour);

    //一般为版本大小
    void setoption_2(int noption_2);

    //一般为校验等级
    void setoption_1(int noption_1);

    void setoption_3(int noption_3);

    //左右空白的宽度
    void setwhitespace_width(int nwidth);

    void setwhitespace_height(int nheight);

    //条码是否添加边框或边界线
    void setoutput_options(int noutput_options);

    void setoutfile(string strPath);

    int Print(int rotate_angle = 0);

};

使用示例:


    {
        BarcodeUtil barcodeGen;
        barcodeGen.CreatInstance();
        barcodeGen.setSymbology(Symbology::CODE128B);
        barcodeGen.setScale(2.0f);
        barcodeGen.setoutfile("tiaoxingma.png");

        std::string strContent = "12345678";
        barcodeGen.setContent(strContent);

        barcodeGen.Print();
    }

    // 生成二维码
        {
            BarcodeUtil barcodeGen;
            barcodeGen.CreatInstance();
            barcodeGen.setSymbology(Symbology::QRCODE);
            barcodeGen.setScale(8.0f);
            barcodeGen.setoutfile("erweima.png");

            std::string strContent = "12345678";
            barcodeGen.setContent(strContent);

            barcodeGen.Print();
        }

http://www.xdnf.cn/news/19852.html

相关文章:

  • k8s初始化常见问题
  • 笔记:深层卷积神经网络(CNN)中的有效感受野简单推导
  • 行业分享丨基于SimSolid的大型汽车连续冲压模具刚度分析
  • vue3前端开发的基础教程——快速上手
  • flutter 中间组件自适应宽度
  • 硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器
  • 深入解析MongoDB内部架构设计
  • 深度学习-----简单入门卷积神经网络CNN的全流程
  • 做 DevOps 还在被动救火?这篇让你把监控玩成 “运维加速器”!
  • 【CV】OpenCV基本操作④——算术操作
  • OpenGL视图变换矩阵详解:从理论推导到实战应用
  • 《四川棒球知识百科》球速最快的运动之一·棒球1号位
  • Grok-4 :AI 基准测试霸主,速度与智能并存——但代价几何?
  • 学习 Android (十九) 学习 OpenCV (四)
  • sql项目总结
  • 无人机报警器8G信号技术解析
  • npm install 报错问题解决 npm install --ignore-scripts
  • 嵌入式学习---(单片机)
  • 【Kubernetes知识点】监控升级,备份及Kustomize管理
  • Python 基础语法与控制流程学习笔记
  • 学习笔记:MYSQL(3)(常用函数和约束)
  • 嵌入式人别再瞎折腾了!这8个开源项目,解决按键/队列/物联网所有痛点,小白也能抄作业
  • 【JVS更新日志】低代码、物联网、无忧企业计划9.3更新说明!
  • GitLab Boards 深度解析:选型、竞品、成本与资源消耗
  • 上下文记忆力媲美Genie3,且问世更早:港大和可灵提出场景一致的交互式视频世界模型!
  • MindNode AI:AI辅助思维导图工具,高效整理思路快速搭框架
  • React学习教程,从入门到精通, React 组件语法知识点(9)
  • 【108】基于51单片机智能输液监测系统【Proteus仿真+Keil程序+报告+原理图】
  • 浅谈linux内存管理 的RMAP机制的作用和原理
  • 指针高级(1)