qrcode 库是一个轻量级的 JavaScript 库,用于在 Web 浏览器中生成二维码。它支持多种输出格式(如 canvas、image 或 SVG),并且可以灵活地定制二维码的样式和参数。
安装与引入
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是一个轻量级且功能强大的二维码生成库,可以生成多种格式(canvas、image、svg)。- 提供了灵活的 API,支持设置二维码的尺寸、颜色、容错级别、边距等。
- 可用于前端项目中快速生成自定义样式的二维码,适用于需要将 URL、文本或其他数据编码为二维码的场景。