如果需要获取二维码的原始内容,可以这样操作:
const Jimp = require('jimp')
const QrcodeReader = require('qrcode-reader')
async function parseQrcode(qrcodePath) {
const image = await Jimp.read(qrcodePath) // 可以是本地路径、网络链接
const originContent = await new Promise((resolve, reject) => {
const qr = new QrcodeReader()
qr.callback = (err, value) => {
if (err) {
reject(err)
return
}
resolve(value.result)
}
qr.decode(image.bitmap)
})
return originContent
}
以上用到 jimp 和 qrcode-reader 来个库。
假设我们有这样一个二维码,就能解析到其原始内容。
parseQrcode('https://img.haomeiwen.com/i5128488/4997f2bfcc035f07.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240')
.then(res => {
console.log(res) // https://mp.weixin.qq.com/a/~~piirdiB7tRQ~GYk703f8DizEuFT0tGHcvA~~
})
我遇到的一个场景是,微信小程序项目接入官方的 CI 工具以提供二维码「预览」时,默认情况下二维码过大,导致在终端体验不佳。
因此,我的做法是对 CI 工具生成的二维码进行解析,获取到其原始内容(如上,其实就是一个 URL 而已),然后利用 qrcode-terminal
或 qrcode 等主流库重新打印「尺寸较小」的二维码到 Terminal 上。
const qrcode = require('qrcode-terminal')
qrcode.generate('qrcodeOriginUrl', {small: true})
作一个记录,The end.
网友评论