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

8 回复

遇到了一样的问题,确实有可能是图片太大的问题;

更多关于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

同样问题,请问解决了吗

这是一个典型的相册二维码识别兼容性问题。问题可能出在以下几个方面:

  1. 图片格式和路径问题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));
});
  1. 二维码图片质量问题:相册选取的二维码可能存在以下问题:

    • 图片尺寸过小或模糊
    • 二维码变形或透视失真
    • 对比度不足
  2. 权限问题:确保应用有读取相册的权限,可以在manifest.json中检查权限配置。

  3. 备选方案:如果barcode模块持续失败,可以考虑使用uni-app的uni.chooseImage配合其他二维码识别库:

uni.chooseImage({
    count: 1,
    success: (res) => {
        // 使用第三方二维码识别库处理
        // 如:qrcode-decoder等
    }
});
回到顶部