QRCode.js的详细使用方法

4,438 阅读3分钟

QRCode.js 是一个非常流行的 JavaScript 库,用于在浏览器中生成二维码。它非常轻量并且简单易用。下面是 QRCode.js 的详细使用方法,包括安装、配置、生成二维码以及定制样式等内容。

1. 引入 QRCode.js 库

你可以通过以下两种方式之一来使用 QRCode.js

1.1 通过 CDN 引入

直接在 HTML 文件中引入库,不需要安装任何包:

<script src="https://cdn.jsdelivr.net/npm/qrcode/build/qrcode.min.js"></script>

1.2 通过 npm 安装

如果你在使用 Node.js 或前端构建工具(如 Webpack、Parcel 等),你可以使用 npm 来安装 QRCode.js

npm install qrcode

然后在你的 JavaScript 文件中导入它:

import QRCode from 'qrcode';

2. 基本用法

以下示例展示了如何在网页中生成一个简单的二维码。

2.1 生成二维码到 Canvas 元素

你可以通过 QRCode.toCanvas() 方法将二维码直接绘制到一个 <canvas> 元素上。以下是一个基本示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Generate QR Code</title>
</head>
<body>
    <h1>Generate QR Code with QRCode.js</h1>
    <canvas id="qrcode"></canvas>

    <script src="https://cdn.jsdelivr.net/npm/qrcode/build/qrcode.min.js"></script>
    <script>
        const text = "https://www.example.com";  // 要编码的内容
        const canvas = document.getElementById('qrcode');  // 获取 canvas 元素

        QRCode.toCanvas(canvas, text, function(error) {
            if (error) {
                console.error(error);
            } else {
                console.log("QR Code successfully generated!");
            }
        });
    </script>
</body>
</html>

2.2 生成二维码到图片 (Image)

你还可以使用 QRCode.toDataURL() 方法生成二维码图像的 Base64 编码,然后将其显示为 <img> 元素的 src 属性。以下是一个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Generate QR Code</title>
</head>
<body>
    <h1>Generate QR Code as Image</h1>
    <img id="qrcodeImage" alt="QR Code">

    <script src="https://cdn.jsdelivr.net/npm/qrcode/build/qrcode.min.js"></script>
    <script>
        const text = "https://www.example.com";  // 要编码的内容
        const imageElement = document.getElementById('qrcodeImage');  // 获取 img 元素

        QRCode.toDataURL(text, function(error, url) {
            if (error) {
                console.error(error);
            } else {
                imageElement.src = url;  // 将二维码图像显示在 img 元素中
                console.log("QR Code image successfully generated!");
            }
        });
    </script>
</body>
</html>

3. 定制二维码样式

QRCode.js 允许你定制二维码的外观,例如改变大小、颜色、容错等级等。以下是一些常用的配置项。

3.1 定制颜色和大小

你可以设置二维码的前景色、背景色、模块大小(单个块的尺寸)、以及二维码的错误修正级别。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Custom QR Code</title>
</head>
<body>
    <h1>Custom QR Code</h1>
    <canvas id="customQrcode"></canvas>

    <script src="https://cdn.jsdelivr.net/npm/qrcode/build/qrcode.min.js"></script>
    <script>
        const text = "https://www.example.com";  // 要编码的内容
        const canvas = document.getElementById('customQrcode');  // 获取 canvas 元素

        const options = {
            width: 300,  // 二维码的宽度
            height: 300, // 二维码的高度
            color: {
                dark: '#000000',  // 二维码的前景色(黑色)
                light: '#ffffff'  // 二维码的背景色(白色)
            },
            errorCorrectionLevel: 'H'  // 错误修正级别:L (低), M (中), Q (较高), H (最高)
        };

        QRCode.toCanvas(canvas, text, options, function(error) {
            if (error) {
                console.error(error);
            } else {
                console.log("Custom QR Code successfully generated!");
            }
        });
    </script>
</body>
</html>

3.2 自定义容错级别

QRCode.js 提供了 4 个错误修正级别,默认是 M,你可以根据需要选择:

  • L — 低容错率(大约 7% 的数据可以丢失)
  • M — 中容错率(大约 15% 的数据可以丢失)
  • Q — 高容错率(大约 25% 的数据可以丢失)
  • H — 最高容错率(大约 30% 的数据可以丢失)
const options = {
    errorCorrectionLevel: 'H',  // 设置错误修正级别
};

3.3 二维码边距和模块大小

  • margin:二维码与周围边缘的空白区域。
  • scale:控制二维码中单个模块(块)的大小。
const options = {
    margin: 10,  // 边距,默认是 4
    scale: 4     // 模块大小,默认是 4
};

4. 生成静态二维码与动态二维码

4.1 静态二维码

静态二维码是简单的二维码,它包含固定的信息,例如网址、文本等。这种二维码不随时间或设备改变。

QRCode.toDataURL('https://www.example.com', function (err, url) {
    console.log(url); // 输出二维码的 base64 编码图像
});

4.2 动态二维码

动态二维码可以通过服务器端生成并与数据库或 URL 动态连接,它们可以在扫码后指向不同的目标地址。你可以通过在服务器端管理 URL 跳转来实现动态二维码。

5. 总结

QRCode.js 是一个功能强大且易于使用的二维码生成库,可以在浏览器中快速生成各种样式的二维码。通过简单的配置,你可以定制二维码的颜色、尺寸、容错级别等,并且支持将二维码绘制到 Canvas 或以图像格式输出。