可以是自己写代码,也可以是调接口,都行
目前我用 jsQR 写的,有的二维码识别不了
求有经验的大佬帮助~~~
根据题主给出的二维码来看,应该是并非整个版面都是二维码导致解析失败
我也使用 jsqr
进行解析
const jsqr = require('jsqr');
const fs = require('fs')
const Jimp = require('jimp');
const buffer = fs.readFileSync('h2.png');
Jimp.read(buffer).then(function(blockimg) {
let width = blockimg.bitmap.width,
height = blockimg.bitmap.height,
imgData = blockimg.bitmap.data;
const code = jsqr(imgData, width, height);
if (code) {
console.log(code.data); //内容
} else {
console.log('未识别成功')
}
}).catch(function(err2) {
if (err2) {
console.log(err2);
}
});
直接解析无法实现,将图片裁剪后成功识别:
裁剪图片可以手动裁剪,也可以用框架裁剪(但我感觉反正没有通用方案,还不如直接手动裁剪快,除非能自动识别二维码区块并裁剪,不然意义不大)
我的操作和二楼差不多,不过我用的是 qrcode-reader ,也是整个版面都是二维码导致解析会失败,自己裁剪以后能读取到
const QrCode = require('qrcode-reader');
const fs = require('fs');
(async () => {
try {
const imgData = await fs.promises.readFile('h-2.png');
const image = await Jimp.read(imgData);
const qr = new QrCode();
qr.callback = function (err, value) {
if (err) {
console.error('err->', err);
throw err;
}
console.log('-->value', value);
console.log('-->value.result', value.result); // http://weixin.qq.com/q/02JHbHB00t8MP10000M03N
};
const result = qr.decode(image.bitmap);
} catch (error) {
console.log('--->', error);
}
})();
1楼楼主提到的 @zxing/library
,我个人研究过一段时间,着实是有点复杂,readme里的说明已经过时了,最新的代码里的API都已经变了,直接照着readme来是报错的, 在chatgpt的帮助下我还是没有把最基本的png二维码的识别给完成,也许我的姿势不对,也欢迎有实现的大佬指点一下。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
https://github.com/zxing-js/library