前端判断上传的图片是否二维码

117 阅读1分钟
npm install jsqr

import jsQR from "jsqr"

function isQrImg(file) {
	const decodeQRCode = image => {
		const canvas = document.createElement('canvas')
		const context = canvas.getContext('2d')
		canvas.width = image.width
		canvas.height = image.height
		context.drawImage(image, 0, 0, canvas.width, canvas.height)
		const imageData = context.getImageData(0, 0, canvas.width, canvas.height)
		const decodedResult = jsQR(imageData.data, imageData.width, imageData.height)
		return !!decodedResult?.data
	}
	var reader = new FileReader()
	reader.readAsDataURL(file)
	return new Promise(resolve => {
		reader.onload = e => {
			const img = new Image()
			img.src = e.target.result
			img.onload = () => {
				resolve(decodeQRCode(img))
			}
			setTimeout(() => {
				resolve(false)
			}, 1000)
		}
	})
}
// 使用await isQrImg()