使用 Node.js 读取二维码

2025年5月8日 | 阅读 4 分钟

在本文中,我们将讨论使用 Node.js 读取 QR 码,包括其功能、安装包和示例。

读取 QR 码

在开发 Node.js 应用程序时,经常需要与使用 QR 码进行通信的第三方应用程序或服务(包括支付网关)进行交互。QR 码是快速安全地传输数据的有效手段。它们通常用于编码支付信息、用户身份验证令牌或产品详细信息等数据。通过整合生成和读取 QR 码的功能,开发人员可以构建无缝的应用程序与这些外部服务之间的连接。

可以通过在 Node.js 应用程序中使用 qrcode 等库来创建具有必要数据的 QR 码,外部系统(如销售点系统或移动应用程序)可以扫描这些数据。然后,Node.js 应用程序可以通过使用 qr-scanner 等库或外部支付网关的 API 来解码数据,从而处理扫描信息,例如验证支付或检索交易详细信息,在处理传入的 QR 码扫描时。

使用 Node.js 读取 QR 码的关键特性

使用 Node.js 读取 QR 码的几个关键特性如下:

  1. 支持多种 QR 码格式:像 qrcode-reader、jsqr 或 qr-scanner 这样的库可以从多种图像格式(包括 PNG、JPEG 和 GIF)读取 QR 码,从而能够灵活地处理基于图像的数据。
  2. 解码和数据提取:扫描 QR 码后,库会对其进行解码以检索编码的数据,包括文本、URL、联系方式和其他类型的信息。数据以应用程序可以处理的可读字符串或对象的形式返回。
  3. 实时扫描:像 qr-scanner 或基于摄像头的解决方案这样的库,可以实现使用摄像头或移动摄像头馈送实时扫描 QR 码。这对于需要实时输入的支付或访问控制系统等应用程序尤其有用。

安装包

安装以下包。

  • Jimp
  • Npm

1. Jimp

Jimp,意为 JavaScript Image Manipulation Program(JavaScript 图像处理程序),是一个强大且适应性强的 Node.js 包,用于处理各种图像处理功能。对于希望在 Node.js 环境中处理图像而无需处理复杂配置的开发人员来说,它是一个理想的选择,因为它完全用 JavaScript 编写,并且不依赖任何本地或外部依赖项。由于该库提供了许多图像处理功能,因此可用于需要自动图像处理的应用程序,例如动态图像增强、裁剪和调整大小。

Jimp 支持以下图像类型:

@jimp/png @jimp/bmp @jimp/tiff @jimp/gif @jimp/jpeg

2. NPM

使用 NPM(Node 包管理器),一个强大的 Node.js 包管理解决方案,可以更轻松地管理项目依赖项、脚本和第三方库。由于 NPM 在安装 Node.js 时会自动安装,因此无需单独安装或配置。NPM 大大简化了开发流程,使开发人员可以轻松地将包添加到他们的项目中、更新和删除它们。

包是预先构建的模块,可以增强我们 Node.js 应用程序的功能,而 NPM 旨在管理它们。开发人员可以从 NPM 注册表(一个庞大的开源包库)访问数百万个免费包并在他们的项目中使用它们。只需单击几下即可使用 NPM 安装这些包,从而为我们节省了从头开始创建功能的时间和麻烦。无论我们正在处理的项目规模如何,NPM 对于维护有序且最新的代码库以及加速开发过程都至关重要。

示例

让我们举一个例子来说明如何使用 Node.js 读取 QR 码。

输出

 
Module not found or error:  Cannot find module 'jimp'   

说明

此代码使用 Node.js 从图像文件读取和解码 QR 码。它首先尝试导入所需的模块:用于解码 QR 码的 qrcode-reader、用于文件系统操作的 fs 和用于图像处理的 Jimp。之后,它使用 fs.readFile() 读取图像文件 (image.png),如果出现问题,它会记录错误消息。Jimp 接收图像进行处理;如果存在问题,则会记录错误。使用 qrcode-reader 库解码图像,回调函数处理解码过程中的任何错误。成功解码 QR 码的结果会被记录下来;如果没有,则显示一条消息,指出未发现 QR 码。最后,catch 块会记录任何一般性错误或与模块相关的错误,并捕获任何未捕获的异常。