uniapp实现H5扫码功能

调用相机并结合qrcode.js解析二维码来实现
qrcode.js源码链接

<!-- html部分(简单的icon图标) -->
<template>
		<view class="">
			<u-icon name="scan" size="100" @click="scanCode()"></u-icon>
		</view>

</template>
<script>
    // 引入qrcode.js (必须导出qrcode.js )
	var qrcode = require('../../static/js/qrcode.js');
	export default {
		data() {
			return {
			}
		},
		onLoad() {
		// 打印qrcode 查看是否引入成功
			console.log(qrcode)
		},
		methods: {
			scanCode() {
				let that = this
				// 调用uni提供的调用相机api
				uni.chooseImage({
					sizeType: ['original'],
					count: 1,
					success: function(res) {
						const tempFilePaths = res.tempFilePaths[0] // 获取到二维码图片的链接
						qrcode.decode(tempFilePaths); // 解析二维码图片
						qrcode.callback = function(res1) {
						   // 解析失败返回 error decoding QR Code
							if (res1 == "error decoding QR Code") {
								uni.showToast({
									title: "识别二维码失败,请重新上传!",
									duration: 2000,
									icon: 'none'
								})
							} else {
							// 解析成功返回二维码链接
								console.log(res1)
							}
						}
					}
				});
			},
		}
	}
</script>

注意:需要在qrcode.js下导出文件

// qrcode.js文件
				case o:
					var m = this.getKanjiString(g);
					h.push(m);
					break
			}
		} while (true);
		return h
	})
};
module.exports = qrcode
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,uni-app官网不支持H5扫码功能,但是可以通过引用中的manifest.json配置来实现H5扫码功能。具体步骤如下: 1.在manifest.json文件中添加如下配置: ```json "h5": { "devServer": { "https": true } } ``` 2.在需要使用扫码功能的页面中引入js文件: ```html <script src="https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script> ``` 3.在页面中添加扫码区域: ```html <div id="qrcode"></div> ``` 4.在页面的script标签中编写生成二维码和扫码的逻辑: ```javascript import QRCode from 'qrcodejs2' export default { mounted() { const qrcode = new QRCode('qrcode', { text: 'https://www.example.com', // 二维码内容 width: 256, // 二维码宽度 height: 256, // 二维码高度 colorDark: '#000000', // 二维码颜色 colorLight: '#ffffff', // 二维码背景色 correctLevel: QRCode.CorrectLevel.H // 二维码容错率 }) qrcode._htOption.colorDark = '#000000' // 二维码颜色 qrcode._htOption.colorLight = '#ffffff' // 二维码背景色 const scanner = new Instascan.Scanner({ video: document.getElementById('preview'), mirror: false }) scanner.addListener('scan', function (content) { console.log(content) }) Instascan.Camera.getCameras().then(function (cameras) { if (cameras.length > 0) { scanner.start(cameras[0]) } else { console.error('No cameras found.') } }).catch(function (e) { console.error(e) }) } } ``` 以上代码中,我们使用了qrcodejs2库来生成二维码,使用了Instascan库来实现扫码功能。需要注意的是,Instascan库需要在https环境下才能正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值