基于 JavaScript (Node.js) 的 QR 码生成器:qrcode 与 qr-image

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Node.js 上的 QR 码生成:qrcode 与 qr-image 库



QR 码已成为现代 Web 应用程序不可或缺的一部分:从网站链接和身份验证到传输联系信息和支付信息。在 Node.js 生态系统中,有几个成熟的库允许您无需第三方 API 和繁重的图形编辑器即可生成 QR 码。在本文中,我们将详细介绍两个最流行的库:qrcode 和 qr-image。您将了解如何安装每个库、它们支持哪些输出格式,并获得可集成到项目中的现成代码示例。



1. qrcode 库 — 通用生成器



qrcode 是一个功能强大的库,支持 JavaScript、TypeScript 甚至浏览器。它允许以 PNG、SVG、canvas 甚至纯文本格式生成 QR 码。主要优势在于详细的配置:您可以更改颜色、纠错级别、添加徽标以及控制边距。



安装

npm install qrcode


基本示例:创建 PNG 图像

const QRCode = require('qrcode');

// 要编码的简单字符串const data = 'https://pythonlib.ru';

QRCode.toFile('qrcode.png', data, { color: { dark: '#000000', // 模块(方块)颜色 light: '#FFFFFF' // 背景颜色 }, errorCorrectionLevel: 'H' // 最大纠错级别}, function (err) { if (err) throw err; console.log('QR 码已保存为 qrcode.png');});


生成 SVG(矢量格式)

const QRCode = require('qrcode');

QRCode.toString('https://pythonlib.ru', { type: 'svg', color: { dark: '#2c3e50', light: '#ecf0f1' }}, function (err, svgString) { if (err) throw err; console.log(svgString); // 在控制台输出 SVG 标记});


生成缓冲区(用于通过 HTTP 发送)

const QRCode = require('qrcode');

QRCode.toBuffer('https://pythonlib.ru', { type: 'png', width: 400, margin: 2}, function (err, buffer) { if (err) throw err; // buffer 是一个 Buffer 对象,可以作为 HTTP 响应发送 // res.setHeader('Content-Type', 'image/png'); // res.send(buffer);});


2. qr-image 库 — 轻量级替代方案



qr-image 是一个极简库,没有多余的依赖项。它专注于快速生成 PNG、SVG、EPS 甚至 PDF(通过安装额外模块)。如果您不需要复杂的颜色设置和徽标,qr-image 将是一个不错的选择。



安装

npm install qr-image


示例:创建 PNG 图像

const qr = require('qr-image');const fs = require('fs');

const data = 'https://pythonlib.ru';const qr_png = qr.image(data, { type: 'png', size: 10 });qr_png.pipe(fs.createWriteStream('qr-image.png'));

console.log('QR 码已保存为 qr-image.png');


生成 SVG

const qr = require('qr-image');const fs = require('fs');

const data = 'https://pythonlib.ru';const qr_svg = qr.image(data, { type: 'svg', size: 10 });qr_svg.pipe(fs.createWriteStream('qr-image.svg'));

console.log('QR 码已保存为 qr-image.svg');


获取 SVG 字符串而不保存到文件

const qr = require('qr-image');

const data = 'https://pythonlib.ru';const svgString = qr.imageSync(data, { type: 'svg' });console.log(svgString); // 准备好的 SVG 标记


3. 库对比



推荐