uniapp H5 扫码 扫一扫 功能

前言
没想到用H5来实现扫码,也是第一次接触,由于项目是打包成H5 ,所以无法调用uniapp scanCode扫码API,在查阅其他前辈博客之后发现H5不是很好实现,最后决定以文件上传的形式来实现。
(效果为 拍照识别,相册照片识别

在这里插入图片描述

在这里插入图片描述

期间使用过npm包的形式使用,也就是qrcode-decoder, 识别率实在是太低,最后还是采用引入qrcode的形式。
1. 引入qrcode.js (直接本地新建空js,然后点下方链接复制代码到该空js文件)
qrcode.js 下载地址 https://gitee.com/xiahaolin/some-important-demo
长的好看的都点⭐了!!!

之后暴露出 qrcode对象,(我看了很多前辈的文章都没有详细讲到uniapp或者vue项目中怎么暴露怎么在页面中使用这个对象 所以我这边写的比较细,感兴趣的可以在页面上导出后打印输出一下qrcode)
在这里插入图片描述

2.页面使用
首先导出该对象
在这里插入图片描述
申明获取文件地址函数

	getObjectURL(file) {
				var url = null
				if (window.createObjectURL !== undefined) { // basic
					url = window.createObjectURL(file)
				} else if (window.URL !== undefined) { // mozilla(firefox)
					url = window.URL.createObjectURL(file)
				} else if (window.webkitURL !== undefined) { // webkit or chrome
					url = window.webkitURL.createObjectURL(file)
				}
				console.log(url)
				return url
			},

最后就是使用解码
我这边图方便直接调用的uniapp的拉取相册和照相机API,获取文件流。
在qrcode中传入通过getObjectURL 返回的url 。最后在qrcode.callback回调中就可以访问到解码值 ,
小提示: 解码失败会返回什么什么error 一条字符串 用此来判断识别失败的业务逻辑处理。

		resolveQR(event) {
				uni.chooseImage({
					count: 1, //默认9 上传数量
					success: res => {
					Qrcode.qrcode.decode(this.getObjectURL(res.tempFiles[0]))
					Qrcode.qrcode.callback = function(res1) {
							console.log(res1)	
								if (res1.indexOf('error') >= 0) {
									//失败
									}else{
									//成功
									}					
						}
					}
				})
			},

!! 有一个小点
如果打印输入 Qrcode的话 可以看到是有 由一个 qrcode 对象 点开后可以看到 decode 这个解码方法

没有输出的话看下 引入 JS包 的时候有没有暴露
还是没有的话就得看下自己的引入路径是不是写错了
在这里插入图片描述

在这里插入图片描述

------------------------------手动分割----------------------------------------
写了个demo 可以直接在电脑上运行测试识别结果 里面有解析中文的JS方法哟 移动端H5(JavaScript)识别二维码功能

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
对于UniApp H5扫码的问题,根据引用和引用的内容,UniAppH5应用中实现扫码功能需要进行一些操作。首先,需要注意的是H5扫码一般需要https的支持才能调用摄像头。其次,可以通过判断来切换不同的扫码处理。具体的代码示例可以参考引用中的代码。 在代码中,通过判断是否为H5环境来区分处理方式。对于非H5环境,可以使用基于微信的SDK进行扫码操作。示例代码中使用了uni.scanCode方法来允许从相机和相册扫码,成功扫码后可以获取到扫描到的信息并进行相应处理。如果是在微信小程序中扫描到二维码,可以获取到扫描结果,并根据需要进行相应的操作。如果未识别到二维码,则会提示重新尝试。 对于H5环境,可以自定义一个方法来处理扫码操作。在示例代码中,使用了onScan方法来处理H5扫描并解析二维码。具体的处理逻辑可以根据实际需求进行编写。 除了扫码功能,还可以在UniAppH5项目中生成二维码进行展示。根据引用的内容,可以使用weapp-qrcode.js这个JS文件来生成二维码。具体的生成过程可以参考相关文档或教程。生成的二维码可以展示给用户,用户可以通过扫码进行一定的快捷操作。 综上所述,对于UniApp H5扫码的问题,可以根据实际需求以及所处环境来选择不同的处理方式,并通过相应的方法来实现扫码功能和二维码的生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

词不达意难知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值