如何克隆具有给定内容文本的二维码图像?

How to clone a QRCode image with given content text?

我有一张二维码图片,它的内容是:P01 V0N S0000000

我尝试使用 node-qrcode:

用不同的 matchPattern 重新生成此图像
const $qr = require('qrcode')
const text = 'P01 V0N S0000000'

for (let i = 0; i < 8; i++) {
  let path = `P01V0NS0000000-${i}.png`
  const opt = {
    maskPattern: i
  }
  $qr.toFile(path, text, opt, function (err) {
    if (err) {
      console.log(err)
    } else {
      console.log(opt)
    }
  })
}

但生成图像的 none 与目标具有相同的模式:

我也尝试过使用不同的 version 参数,但所有版本 >1 都会生成非常密集的模式。

这个二维码图片是用某种salt生成的很难复制吗?

无需尝试其他版本,因为您的第一张图片显然是 version 1 (21x21)。相反,它可能是格式编码(给定字符集,应用程序可能使用 alphanumeric,而您的原件很可能是 byte 例如)

根据您提供的 link,我建议阅读 this section 有关模式的内容,并尝试使用:

mode: 'alphanumeric'

或与:

mode: 'byte'

查看是否有任何匹配您的原始代码。

另一个可以改变 QR-code 外观的参数是 error correction level。我猜默认情况下 node-qrcode 使用给定版本 1 的最高级别,而您的原始版本可能使用较低的级别。

有了这些参数,你就有了一组 8(maskPattern)*2(mode)*4(errorCorrectionLevel) = 64 可能的 QR-code ,里面有相同的数据,所以也许其中一个会匹配!


编辑

由于您的数据长度为 16 个字符,因此范围缩小,因为纠错级别只能具有以下值 (source):

  • L,M,Q 对于 alphanumeric 模式
  • L 对于 byte 模式

因此,您有 (3+1)*8 = 32 个可能的结果图像。