//qr.cpp
#include "qr.h"
#include <QPainter>
#include <QImage>
QR::QR()
{
}
QImage QR::produceQrTest(const QString &info)
{
//放置二维码
QImage dst;
//绘制方块大小
int scale = 4;
//将字符串转字符集合,同时定义编码格式为UTF8
QByteArray info_date = info.toUtf8();
//调用libqrencode库进行编码
QRcode* qr = QRcode_encodeString(info_date.constData(), 0, QR_ECLEVEL_Q, QR_MODE_8, 1);
//绘制
if (qr && qr->width > 0)
{
//设置图像大小
int img_width = qr->width * scale;
//创建画布
dst = QImage(img_width, img_width, QImage::Format_Mono);
//创建油漆工
QPainter painter(&dst);
//填充白色背景
painter.fillRect(0, 0, img_width, img_width, Qt::white);
//设置画笔
painter.setPen(Qt::NoPen);
//设置黑色刷子
painter.setBrush(Qt::black);
//绘制二维码
for (int y = 0; y < qr->width; y++)
{
for (int x = 0; x < qr->width; x++)
{
//绘制黑块
if (qr->data[y*qr->width + x] & 1)
{
QRect r(x*scale, y*scale, scale, scale);
painter.drawRect(r);
}
}
}
QRcode_free(qr);
}
return dst;
}