You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS中解码包含多个QR码的图片

解决多QR码图片的解码问题

我来帮你搞定这个多QR码识别的难题~首先得说明:jsQR本身只支持识别单张图片里的一个QR码,这是它的设计限制,所以遇到包含多个QR码的图片时,它就会返回null,这不是你的代码问题哦。

下面给你两种可行的解决方案,推荐第一种,简单高效:

方案一:使用支持多码识别的库(推荐)

@zxing/library是一个功能强大的条码识别库,原生支持识别单张图片中的多个QR码,而且在Node.js环境下完全可用。

步骤1:安装依赖

先安装需要的包:

npm install @zxing/library jimp

步骤2:替换为多码识别代码

把你的代码改成下面这样,就能识别图片里的所有QR码了:

const fs = require('fs');
const Jimp = require("jimp");
const { MultiFormatReader, BarcodeFormat } = require('@zxing/library');

async function decodeMultipleQRCodes() {
  // 读取图片文件
  const buffer = fs.readFileSync("你的图片路径");
  const image = await Jimp.read(buffer);
  
  // 转换为zxing需要的图像数据格式
  const imageData = new Uint8ClampedArray(image.bitmap.data);
  const { width, height } = image.bitmap;

  // 初始化多格式阅读器,指定只识别QR码(提高识别效率)
  const reader = new MultiFormatReader();
  reader.setPossibleFormats([BarcodeFormat.QR_CODE]);

  try {
    // 读取图片中的所有QR码
    const results = reader.readMulti(new Uint8Array(imageData), width, height);
    
    console.log("识别结果:");
    results.forEach((result, idx) => {
      console.log(`第${idx+1}个QR码内容:${result.text}`);
      // 如果需要位置信息,可以打印result.resultPoints
      // console.log(`位置坐标:`, result.resultPoints);
    });
  } catch (err) {
    console.error("识别失败:", err.message);
  }
}

// 执行识别
decodeMultipleQRCodes();

用这个代码测试你提供的多QR码图片,就能成功输出两个QR码的内容啦。

方案二:基于jsQR手动分割图片(不推荐)

如果一定要用jsQR,你需要先手动定位图片中每个QR码的位置,把图片分割成多个单QR码的子图片,再分别用jsQR解码。但这种方法需要额外实现QR码定位逻辑(比如通过边缘检测、轮廓识别),复杂度高,不如直接用支持多码的库省心。


内容的提问来源于stack exchange,提问作者Kumar KS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:18:57