C++ QRcode 二维码生成

  第一次发现,C++ 生成 二维码居然如此简单哟!~

       1.首先借助   第三方库,libqrencode  地址。也可以自行百度。
       2.将此库 包含在C++ 工程中,其中 有部分 编译错误,修改如下:
       
/**
 * @deprecated
 */
extern _declspec(deprecated) void QRcode_clearCache(void);


 
    3.STATIC_IN_RELEASE  修改为 static 即可。

   4.附带Qt 下代码,Windows 下类似哦。
    
#define MAX_URI_LENGTH 255
#define QR_IMAGE_SIZE  300
void QtGuiApplication1::update()
{
	ui.lblQRCode->setText("");
	QString uri = "123456";
	if (!uri.isEmpty())
	{

		// limit URI length

		if (uri.length() > MAX_URI_LENGTH)
		{
			ui.lblQRCode->setText(tr("Resulting URI too long, try to reduce the text for label / message."));
		}
		else {

			QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1);

			if (!code)

			{

				ui.lblQRCode->setText(tr("Error encoding URI into QR Code."));

				return;

			}

			QImage qrImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32);

			qrImage.fill(0xffffff);

			unsigned char *p = code->data;

			for (int y = 0; y < code->width; y++)

			{

				for (int x = 0; x < code->width; x++)

				{

					qrImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff));

					p++;

				}

			}

			QRcode_free(code);
			QImage qrAddrImage = QImage(QR_IMAGE_SIZE, QR_IMAGE_SIZE + 20, QImage::Format_RGB32);

			qrAddrImage.fill(0xffffff);

			QPainter painter(&qrAddrImage);

			painter.drawImage(0, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE));

			QFont font("宋体", 10, QFont::Bold, true);

			font.setPixelSize(12);

			painter.setFont(font);

			QRect paddedRect = qrAddrImage.rect();

			paddedRect.setHeight(QR_IMAGE_SIZE + 12);

			painter.drawText(paddedRect, Qt::AlignBottom | Qt::AlignCenter,uri);

			painter.end();

			ui.lblQRCode->setPixmap(QPixmap::fromImage(qrAddrImage));
		}
	}
}
        其中,使用到库的代码就一句。
            QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1);


 附带截图!
               
C++ QRcode 二维码生成_第1张图片

你可能感兴趣的:(C++)