如何克隆具有给定内容文本的二维码图像?
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
个可能的结果图像。
我有一张二维码图片,它的内容是: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
个可能的结果图像。