libqr--简单好用的c++二维码生成库
2016-07-27 18:17
183 查看
libqr简介
libqr是github上开源的二维码生成库,地址:https://github.com/rsky/qrcode。使用c语言写成,但是用在c++代码里面毫无违和感,api简单好用,自带输出bitmap(未验证)和png格式图片的二维码,不过有一点,好像是日本人写的。。。。代码示例
libqr使用起来非常简单,只需要包含qr.h头文件,编译的时候把libqr.a给编译进去。使用libqr生成二维码分成4个步骤:初始化二维码句柄
添加数据
调用finalize
生成图片
使用过程中需要对二维码有基本的了解,需要知道二维码的version,mode,纠错等级和掩码,推荐看这篇文章:http://news.cnblogs.com/n/191671/
废话少说,直接上实例代码
#include <stdio.h> #include <fstream> #include "qr.h" using namespace std; int main() { int errcode = QR_ERR_NONE; //qrInit的5个参数分别是version,mode,纠错等级和掩码,使用过程中使用除了QR_EM_8BIT以外的mode会生成不正常的二维码,暂时不知道原因。 QRCode* p = qrInit(10, QR_EM_8BIT, 2, -1, &errcode); if (p == NULL) { printf("error\n"); return -1; } string strData = "http://www.baidu.com中文"; qrAddData(p, (const qr_byte_t* )strData.data(), strData.length()); //注意需要调用qrFinalize函数 if (!qrFinalize(p)) { printf("finalize error\n"); return -1; } int size = 0; //两个5分别表示:像素之间的距离和二维码图片的放大倍数,范围都是1-16 qr_byte_t * buffer = qrSymbolToPNG(p, 5, 5, &size); if (buffer == NULL) { printf("error %s", qrGetErrorInfo(p)); return -1; } ofstream f("a.png"); f.write((const char *)buffer, size); f.close(); return 0; }
简单粗暴几行就搞定了,相比起其他晦涩难懂并且还要加上图片库配套使用的二维码生成库来说真是太方便了。
相关文章推荐
- VC++使用WebBrowser控件,强制给控件指定版本显示网页
- VC++ 禁止WebBrowser网页跳转时发出的声音和禁止网页上的文字被选择
- android studio C/C++ jni 编写以及调试方法
- c/c++第三天
- C语言数据类型
- C语言类型
- C++中输出指定位数的小数
- C++中引用(&)的用法和应用实例
- C语言中的指针和内存泄露
- C++ 中的&:“&引用” 和“&取地址符”的区别和作用
- Leetcode 74. Search a 2D Matrix (Medium) (cpp)
- 第18周 C语言实战105例 例5:使用位运算符解析IP地址
- 归并排序算法
- 堆排序
- 学习C语言的第三天
- 阐述问答题(C语言)
- c++计算器后续(2)
- Leetcode 75. Sort Colors (Medium) (cpp)
- [C++]高效使用c++11的一些建议
- C语言合并数组