可能是IOS 相机识别算法不够精准。导致识别出的结果部分被截断。因此 在IOS APP环境下特殊处理 为服务器请求解析。
PHP 端 引入 二维码解析库 qhQrCodeReader
public function decodeQrcode() {
require_once 'qhQrCodeReader/MGQrCodeReader/MGQrCodeReader.php';
$MGQrCodeReader = new \MGQrCodeReader\MGQrCodeReader();
$text = $MGQrCodeReader->read($_FILES['file']['tmp_name']);
if (!$text) {
fail('无法识别该二维码数据');
}
// 考虑到 可能编码存在 非UTF8的文本 导致乱码 需要编码为 utf8格式
$code = strtolower(mb_detect_encoding($text,['UTF-8','GBK','GB2312']));
if ($code!='utf-8') {
$text = iconv('GB2312','UTF-8',$text);
}
succ($text);
}
uniapp 端
uni.chooseImage({
sourceType:['camera'],
success:(res)=>{
console.log(res.tempFilePaths[0])
app.uploadFile('decodeQrcode', res.tempFilePaths[0], (result)=>{
console.log(result)
})
},
fail:(res)=>{
app.alert('选择图片异常');
}
});