当前位置: 首页 > 工具软件 > Zint > 使用案例 >

VC利用 zint 库生成二维码

杨俊茂
2023-12-01

1. zint库,可以先下载源码,编译出来。编译过程需要用到 libpng库。

2. 使用起来比较简单,导入头和库文件即可。

3. 在生成QR二维码时,手册上没有描述具体信息。下面给出一段生成二维码的代码。


BOOL CSystemInfo::GenerateBarcode(const char *szText,int len,const char *szOutPath)
{
	struct zint_symbol *symbol;
	int ret = 0;

	if (!szText)
	{
		DbgPrint(("GenerateBarCode invalid parameter"));
		return FALSE;
	}

	TRY
	{
		symbol = ZBarcode_Create();
		if (symbol != NULL)
		{
			symbol->scale = 4;
			symbol->option_1 = 1; //容错级别
			symbol->option_2 = 1; //版本,决定图片大小
			symbol->symbology = BARCODE_QRCODE;
			symbol->output_options = 0;
			symbol->show_hrt = 0; //可显示信息,如果设置为1,则需要设置text值
			symbol->input_mode = UNICODE_MODE;
			if (szOutPath)
				memcpy(symbol->outfile,szOutPath,sizeof(symbol->outfile) - 1); //输出文件名
		
			ret = ZBarcode_Encode(symbol,(unsigned char *)szText,len); //编码
			if (ret != 0)
			{
				DbgPrint(("ZBarcode_Encode err: %s",symbol->errtxt));
				ZBarcode_Delete(symbol);
				return FALSE;
			}
			ret = ZBarcode_Print(symbol,0); //antate angle 旋转角度
			if (ret > WARN_INVALID_OPTION)
			{
				DbgPrint(("ZBarcode_Print ret: %d,err: %s",ret,symbol->errtxt));
			}
			ZBarcode_Delete(symbol);
			return TRUE;
		}else
		{
			DbgPrint(("ZBarcode_Create err: %s",symbol->errtxt));
			return FALSE;
		}
	}CATCH(CException,e)
	{
		char szErr[256] = {0};
		e->GetErrorMessage(szErr,255);
		DbgPrint(("GenerateBarcode exception: %s",szErr));
		return FALSE;
	}END_CATCH
}

注:

二维码的设置需要如下几个参数:

scale  放大倍数

option_1 依赖于symbology,不同编码有不同意义

option_2 依赖于symbology,不同编码有不同意义

symbology  编码类型,在手册上有描述,如二维码是58

output_options 有无边框之类的控制

show_hrt 在图片上显示可读信息,如果设置为1,则text必须含有内容。

text 图片上显示的文字信息,配合show_hrt使用。

input_mode 决定编码格式,二进制流,还是ASCII,亦或是UTF8


源码http://download.csdn.net/detail/liuyu60305002/6835395



 类似资料: