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();
}