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