qrcode库的详细使用

2,685 阅读3分钟

qrcode 库是一个轻量级的 JavaScript 库,用于在 Web 浏览器中生成二维码。它支持多种输出格式(如 canvasimageSVG),并且可以灵活地定制二维码的样式和参数。

安装与引入

1. 通过 CDN 引入

如果你不使用模块化构建工具,可以直接在 HTML 文件中引入 CDN:

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

2. 通过 npm 安装

对于 Node.js 或前端构建工具(如 Webpack、Parcel 等),你可以通过 npm 安装:

npm install qrcode

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

import QRCode from 'qrcode';

基本用法

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</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. 生成二维码为 DataURL(图像格式)

如果你希望将二维码作为图像呈现,可以使用 QRCode.toDataURL() 方法,它返回二维码图像的 Base64 编码 URL。

<!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 as Image</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. 生成二维码为 SVG

你还可以将二维码生成 SVG 格式,使用 QRCode.toString() 方法并设置格式为 "svg"

<!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 as SVG</title>
</head>
<body>
    <h1>Generate QR Code as SVG</h1>
    <div id="qrcodeSvg"></div>

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

        QRCode.toString(text, { type: 'svg' }, function(error, svg) {
            if (error) {
                console.error(error);
            } else {
                svgContainer.innerHTML = svg;  // 将生成的 SVG 放入 DOM 中
                console.log("QR Code SVG successfully generated!");
            }
        });
    </script>
</body>
</html>

配置与定制二维码

QRCode.js 提供了多种选项,可以定制二维码的外观、尺寸、容错率等。

1. 修改二维码尺寸与容错级别

二维码的大小、容错级别以及颜色等都可以在生成时进行设置。

const options = {
    width: 300,              // 二维码宽度(px)
    height: 300,             // 二维码高度(px)
    margin: 10,              // 边距(默认 4)
    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("QR Code successfully generated with custom options!");
    }
});

2. 错误修正级别

二维码的错误修正级别决定了它能容忍多少损坏。QRCode.js 支持以下几种级别:

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

3. 修改二维码颜色

你可以通过 color 属性来设置二维码的前景色(dark)和背景色(light)。

const options = {
    color: {
        dark: '#000000',   // 前景色:黑色
        light: '#ffffff'   // 背景色:白色
    }
};

4. 其他常见选项

  • width 和 height: 设置二维码的宽度和高度(单位:px)。
  • margin: 设置二维码四周的空白区域(默认值为 4)。
  • scale: 设置单个模块的大小,影响二维码整体的尺寸。
const options = {
    width: 200,              // 设置二维码宽度
    height: 200,             // 设置二维码高度
    margin: 4,               // 设置二维码的外边距
    scale: 4                 // 设置每个模块的缩放比例
};

示例:生成自定义样式二维码

<!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>Generate 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, // 二维码的高度
            margin: 10,  // 设置外边距
            color: {
                dark: '#0000FF',  // 蓝色前景
                light: '#F0F0F0'   // 浅灰色背景
            },
            errorCorrectionLevel: 'H'  // 设置错误修正级别为 H
        };

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

总结

  • QRCode.js 是一个轻量级且功能强大的二维码生成库,可以生成多种格式(canvasimagesvg)。
  • 提供了灵活的 API,支持设置二维码的尺寸、颜色、容错级别、边距等。
  • 可用于前端项目中快速生成自定义样式的二维码,适用于需要将 URL、文本或其他数据编码为二维码的场景。