node.js - 如何克隆具有给定内容文本的 QRCode 图像?

标签 node.js qr-code

我有一个 QRCode 图像及其内容:P01 V0N S0000000 enter image description here

我尝试使用 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)
    }
  })
}

但生成的图像均不具有与目标相同的图案: enter image description here

我还尝试了不同的 version 参数,但所有 version>1 都会生成非常密集的模式。

此 QRCode 图像是否使用某种salt 生成,使其难以复制?

最佳答案

无需尝试其他版本,因为您的第一张图像显然是版本 1 (21x21)。相反,它可能是格式编码(给定字符集,应用程序可能使用字母数字,而您的原始数据很可能是字节)

根据您提供的链接,我建议阅读 this section关于模式并尝试以下任一方式:

mode: 'alphanumeric'

或与:

mode: 'byte'

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

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

使用这些参数,您将拥有一组 8(maskPattern)*2(mode)*4(errorCorrectionLevel) = 64 可能的 QR 码,其中包含相同的数据,因此也许其中一个会匹配!

<小时/>

编辑

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

  • LMQ 用于字母数字模式
  • L 表示字节 模式

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

关于node.js - 如何克隆具有给定内容文本的 QRCode 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105954/

相关文章:

javascript - fatal error : Scavenger: semi-space copy Allocation failed

javascript - 如何保存应用程序的登录次数?(nodejs,JS,mongodb)

mysql - NodeJs Mysql错误: ER_PARSE_ERROR Insert to multiple table

javascript - 如何在另一个异步 `each` 方法(NodeJS)中调用异步方法?

database - 使用二维码将信息存储在数据库中

ios - 如何加密/解密安全 QR - 在 Swift 中编码为可读格式

php - 如何将生成的 QR 码作为 PNG 存储到 Laravel 中的数据库中

node.js - cometd 应用程序基准测试

python - 在 Python (PyQt) 中创建二维码