使用 qrcode 库在 Node.js 上生成二维码
二维码已成为现代网络不可或缺的一部分:从 Wi-Fi 链接到支付确认。如果您正在开发 Node.js 后端并希望以编程方式创建二维码,qrcode 库是最流行且最简单的工具。它无需安装额外的图形包,并且能够以多种格式输出结果:PNG、SVG、HTML Canvas,甚至终端文本视图。
安装
通过 npm 安装该包:
npm install qrcode安装后,将模块引入您的项目:
const QRCode = require('qrcode');主要方法
该库提供了三种主要的生成方法:
QRCode.toDataURL(text, options)— 返回 Data URL(包含 PNG 图像的 base64 字符串)。QRCode.toBuffer(text, options)— 返回包含 PNG 图像的 Buffer(便于保存到文件或通过 HTTP 发送)。QRCode.toString(text, options)— 返回 SVG 或终端字符形式的字符串(输出类型在options.type中设置)。QRCode.toCanvas(canvasElement, text, options)— 用于浏览器环境(canvas)。
简单示例:创建 PNG(缓冲区)二维码
最常见的场景是生成图像并保存到文件或提供给用户。操作方法如下:
const QRCode = require('qrcode');const fs = require('fs');
QRCode.toBuffer('https://pythonlib.ru', { width: 400, margin: 2, color: { dark: '#000000', light: '#ffffff' }}).then(buffer => { fs.writeFileSync('qrcode.png', buffer); console.log('二维码已保存到 qrcode.png');}).catch(err => console.error(err));在此示例中,我们设置了 400 像素的尺寸、2 个模块的边距以及黑白配色方案。toBuffer 方法返回一个 Promise,因此我们使用 .then() 或 async/await。
生成 SVG 格式的二维码
对于 Web 应用程序,使用矢量格式 SVG 通常更方便——它可无损缩放且占用空间更小。在选项中指定 type: 'svg':
const QRCode = require('qrcode');
QRCode.toString('https://pythonlib.ru', { type: 'svg', width: 300, color: { dark: '#1a73e8', light: '#ffffff' }}).then(svgString => { console.log(svgString); // 现在您可以将 svgString 保存到文件或插入到 HTML 中}).catch(err => console.error(err));直接在终端输出二维码
有时需要快速检查链接而无需打开浏览器。该库可以使用 Unicode 字符在控制台中绘制二维码:
const QRCode = require('qrcode');
QRCode.toString('Hello, PythonLib!', { type: 'terminal', small: true}).then(qr => { console.log(qr);}).catch(err => console.error(err));参数 small: true 使二维码更紧凑(使用半块字符)。如果去掉它,图像会更大但更详细。
设置和参数
options 对象允许灵活控制生成过程。主要字段:
width— 图像宽度(像素,默认 256)。margin— 边缘边距(以二维码模块为单位,默认 4)。color.dark— 深色模块的颜色(hex、rgb 或颜色名称)。color.light— 背景颜色(默认白色)。errorCorrectionLevel— 纠错级别:'L'(7%)、'M'(15%)、'Q'(25%)、'H'(30%)。级别越高,可恢复的数据越多,但二维码本身也会变得更密集。