我有一个 QRCode 图像及其内容: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)
}
})
}
我还尝试了不同的 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 ):
L
、M
、Q
用于字母数字
模式L
表示字节
模式
因此,您有 (3+1)*8 = 32
可能的结果图像。
关于node.js - 如何克隆具有给定内容文本的 QRCode 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105954/