libqr--简单好用的c++二维码生成库

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 
#include 
#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;
}

简单粗暴几行就搞定了,相比起其他晦涩难懂并且还要加上图片库配套使用的二维码生成库来说真是太方便了。

你可能感兴趣的:(libqr--简单好用的c++二维码生成库)