uni-app中uni.scanCode扫一扫可识别,但相册选取二维码扫描失败,plus.barcode.scan一直触发错误回调,无法获取二维码内容
uni-app中uni.scanCode扫一扫可识别,但相册选取二维码扫描失败,plus.barcode.scan一直触发错误回调,无法获取二维码内容
示例代码:
plus.barcode.scan(image.path, function(type, result) {
console.log("扫描成功:(" + type + ")" + result);
}, function(e) {
console.log("扫描失败: " + JSON.stringify(e));
});
操作步骤:
- 相册选取二维码===》识别失败
预期结果:
- 相册选取二维码===》识别二维码成功
实际结果:
- 一直识别失败
bug描述:
uni.scanCode扫一扫可以识别,但是相册选取二维码扫描失败, plus.barcode.scan一直走的错误的回调,无法获取二维码中的内容
| 信息类别 | 信息内容 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC操作系统版本 | win 10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.2 |
| 手机系统 | Android |
| 手机系统版本 | Android 10 |
| 手机厂商 | OPPO |
| 手机机型 | OPPO A3 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app中uni.scanCode扫一扫可识别,但相册选取二维码扫描失败,plus.barcode.scan一直触发错误回调,无法获取二维码内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html
遇到了一样的问题,确实有可能是图片太大的问题;
更多关于uni-app中uni.scanCode扫一扫可识别,但相册选取二维码扫描失败,plus.barcode.scan一直触发错误回调,无法获取二维码内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可能是图片尺寸太大,需要压缩,大哥你现在找到好的解决方法了吗
我换插件了 使用了支付宝原生扫码插件
let imagePath=‘xx/xxx/xxx.png’
uni.compressImage({
src: imagePath,
quality: 100,
width:‘400px’,
success: res => {
plus.barcode.scan(res.tempFilePath, function(type, result) {
//todo
}, function(e) {
uni.showToast({
title: ‘识别失败’,
icon: ‘none’
})
});
}
})
如果是在线的需要调用下载再压缩识别
还是容易失败tnnd
这是一个典型的相册二维码识别兼容性问题。问题可能出在以下几个方面:
- 图片格式和路径问题:
image.path可能不是barcode模块可识别的有效路径。建议使用plus.io.convertLocalFileSystemURL()转换路径:
let filePath = plus.io.convertLocalFileSystemURL(image.path);
plus.barcode.scan(filePath, function(type, result) {
console.log("扫描成功:(" + type + ")" + result);
}, function(e) {
console.log("扫描失败: " + JSON.stringify(e));
});
-
二维码图片质量问题:相册选取的二维码可能存在以下问题:
- 图片尺寸过小或模糊
- 二维码变形或透视失真
- 对比度不足
-
权限问题:确保应用有读取相册的权限,可以在manifest.json中检查权限配置。
-
备选方案:如果barcode模块持续失败,可以考虑使用uni-app的
uni.chooseImage配合其他二维码识别库:
uni.chooseImage({
count: 1,
success: (res) => {
// 使用第三方二维码识别库处理
// 如:qrcode-decoder等
}
});


