vue实现二维码识别功能 读取二维码内容

news2025/1/6 19:55:24

我们可以访问 https://www.wwei.cn/?from=bdtp
在输入框中输入文本 然后 点击生成二维码
在这里插入图片描述
他就会给我生成一个对应信息的二维码图片 我们可以复制到本地
在这里插入图片描述
打开vue项目
先引入依赖

npm install canvas jsqr

然后组件编写代码如下

<template>
  <div>
    <input type="file" accept="image/*" @change="onFileChange">
    <canvas class = "canvas" ref="canvas"></canvas>
    {{ com }}
  </div>
</template>

<script>
import jsQR from 'jsqr'

export default {
  name: 'ScanQRCode',
  data(){
    return {
        com: ""
    }
  },
  methods: {
    async onFileChange(e) {
      const file = event.target.files[0]
      const reader = new FileReader()
      reader.onload = () => {
        const img = new Image()
        img.onload = () => {
          const canvas = this.$refs.canvas;
          const context = canvas.getContext('2d')
          context.drawImage(img, 0, 0, canvas.width, canvas.height)
          const imageData = context.getImageData(0, 0, canvas.width, canvas.height)
          const code = jsQR(imageData.data, imageData.width, imageData.height)
          if (code) {
            this.com = code.data;
          } else {
            this.com = "无法识别";
          }
        }
        img.src = reader.result;
      }
      reader.readAsDataURL(file);
    },
    parseQrCode(imageUrl) {
        return new Promise((resolve, reject) => {
            const qr = new QrCode();
            const img = new Image();
            img.onload = () => {
                qr.callback = (err, result) => {
                    if (err) {
                        debugger
                        reject(err);
                    } else {
                        resolve(result);
                    }
                };
                qr.decode(img);
            };
            img.src = imageUrl;
        });
    }
  },
  mounted() {
    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({ video: true }).then((stream) => {
        const video = document.createElement('video');
        video.srcObject = stream;
        video.play();
        const canvas = this.$refs.canvas;
        const ctx = canvas.getContext('2d');
        const qr = new QrCode();
        const scan = () => {
            if (video.paused || video.ended || video.readyState < 2) {
            setTimeout(scan, 100);
            return;
            }
            canvas.width = video.videoWidth;
            canvas.height = video.videoHeight;
            ctx.drawImage(video, 0, 0);
            try {
            qr.decode(canvas.toDataURL());
            } catch (err) {}
            setTimeout(scan, 100);
        };
        scan();
        });
    }
  }
}
</script>

<style scoped>
.canvas{
    display: none;
}
</style>

然后 我们打开PC端网页访问 点击 选择文件
他就会让我在文件夹中选择 我们选一个二维码
在这里插入图片描述
我们定制的内容也是被识别了出来
在这里插入图片描述
当我用手机 点击选择文件
在这里插入图片描述
他会问我们拍照还是从相册中去找
我们点击拍照
用相机把二维码拍给他 注意 一定要清晰一点 不然识别不出来
在这里插入图片描述
这样 我们的二维码也是成功在手机端也识别了出来
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

首届中国元宇宙应用场景大赛成果发布暨河畔元宇宙论坛圆满落幕

5月26日下午&#xff0c;首届中国元宇宙应用场景大赛成果发布暨河畔元宇宙论坛在北京城市副中心圆满落幕。活动在通州区委、区政府指导下&#xff0c;由北京大数据协会元宇宙专业委员会主办&#xff0c;中国质量认证中心、绿色智能新经济产业联盟、中关村元宇宙产业发展联盟协办…

【大数据处理与可视化】八、文本数据分析

【大数据处理与可视化】八、文本数据分析 实验目的实验内容实验步骤一、案例——商品评价分析1、读取数据&#xff0c;并转换成DataFrame对象进行展示。2、从输出的结果看&#xff0c;多条评价信息是没用且重复的&#xff0c;所以&#xff0c;要用pandas中的drop_duplicates()方…

Java笔记039-多用户即时通信系统

目录 多用户即时通信系统 项目介绍 项目演示 项目结构 涉及到Java的技术 项目开发流程 需求分析 界面设计 功能实现-用户登录 1、功能说明 2、思路分析程序框架图 3、代码实现 功能实现-拉去在线用户列表 1、功能说明 2、思路分析程序框架图 3、代码实现 功能…

什么是LIS系统?LIS系统的优势有哪些?

一、LIS系统 LIS系统(Laboratory Information System) 即 实验室&#xff08;检验科&#xff09;信息系统&#xff0c;它是医院信息管理的重要组成部分之一。 LIS系统是实验室信息管理系统&#xff0c;是医院信息管理的重要组成部分。它采用智能辅助功能&#xff0c;自动接收检…

【分布式文件存储】MinIO部署及实现文件上传下载

目录 概述 MinIO集群部署 准备docker-compose.yml 测试启动 MinIO用户管理 Buckets管理 创建Buckets MinIO客户端 引入依赖 文件上传下载Demo 调用API碰到的问题 概述 MinIO | 高性能, Kubernetes 原生对象存储 MinIO是全球领先的对象存储先锋&#xff0c;目前在全世…

TCP协议的RST标志

下文中的内容多数来自【参考】中的文章&#xff0c;这边进行一个整理和总结&#xff0c;后续会慢慢增加出现各个 RST 包的测试代码&#xff0c;便于理解。 TCP的 “断开连接” 标志 RST 标志 Reset&#xff0c;复位标志&#xff0c;用于非正常地关闭连接。它是 TCP 协议首部里…

企业产品操作手册,真的很有必要吗?

产品操作手册是一种对于产品使用者而言非常重要的工具。它是一份向用户介绍产品使用方法和功能的文档&#xff0c;可以提供关于产品的详细信息&#xff0c;解答用户的疑问&#xff0c;并帮助用户快速上手使用产品。 产品操作手册的必要性&#xff1a; 一、提高用户使用体验 …

Matlab论文插图绘制模板第95期—双向柱状图

在之前的文章中&#xff0c;分享了很多Matlab柱状图的绘制模板&#xff1a; 进一步&#xff0c;再来看一种特殊的柱状图&#xff1a;双向柱状图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。…

抖音seo源码如何开发部署?

前言&#xff1a;抖音seo源码&#xff0c;抖音矩阵系统源码搭建&#xff0c;抖音矩阵同步分发。抖音seo源码部署是需要对接到这些正规接口再来做开发的&#xff0c;目前账号矩阵程序开发的功能&#xff0c;围绕一键管理多个账号&#xff0c;做到定时投放&#xff0c;关键词自动…

腾讯云服务器常用端口号大全以及端口开启方法

腾讯云服务器常用端口号如80、21、22、8080等端口&#xff0c;出于安全考虑一些常用端口默认是关闭的&#xff0c;腾讯云服务器端口如何打开呢&#xff1f;云服务器CVM在安全组中开启端口&#xff0c;轻量应用服务器在防火墙中可以打开端口&#xff0c;腾讯云百科来详细说下腾讯…

解析云盘存储的优缺点:安全靠谱还是存在风险?

云盘是一种基于云计算技术的在线存储服务&#xff0c;用户可以通过互联网将文件上传到云端&#xff0c;并可以随时随地通过网络访问这些文件。 相较于传统的本地存储&#xff0c;云盘具有以下优势&#xff1a; 1.数据安全性更高&#xff1a;云盘使用专业的云计算技术和安全措施…

vue 截取字符串的方法

vue中的字符串方法&#xff0c;我目前使用最多的是下面两种方法&#xff0c;因为 vue的字符串方法支持断言操作。 1、 vue中截取字符串的方法如下&#xff1a; 2、 vue中截取字符串的方法&#xff0c;这个方法也是需要依赖于 vue库提供的支持。 3、 vue中截取字符串的方法&…

腾讯云服务器CVM和轻量应用服务器区别

关于腾讯云轻量应用服务器和云服务器CVM的区别&#xff0c;之前腾讯云百科写过一篇文章来对比&#xff0c;如今2023阿腾云又更新了一篇新的区别对比文章&#xff0c;比之前的要更加详细&#xff0c;包括轻量服务器的使用限制、CPU型号、公网限制月流量、内网连通性、硬盘存储等…

f1c200s---编译uboot

目录 前言安装必要工具安装交叉编译链工具 下载Uboot切换分支查看配置文件 配置Uboot修改Makefile配置文件 编译uboot出现/bin/sh: 1: python: not found错误出现multiple definition of yylloc错误出现FATAL ERROR: Unable to parse input tree错误出现/usr/bin/env: python2:…

微服务架构综合实战 一文让你了解什么是微服务 使用PHP 搭建微服务框架 最全微服务架构讲解以及演示

本文将带你从基础的微服务架构设计、网络协议、注册中心、配置中心、网关层面 渐进式讲解其微服务。 一、微服务架构设计方案 架构演进 在将微服务之前 我们看看目前的架构 单体架构 按照模块划分&#xff0c;公用一个数据库 垂直拆分架构 按业务功能划分单独的子系统&…

为什么pnpm比npm、yarn使用更好

performant npm &#xff0c;意味高性能的 npm。pnpm由 npm/yarn 衍生而来&#xff0c;解决了 npm/yarn 内部潜在的bug&#xff0c;极大的优化了性能&#xff0c;扩展了使用场景。被誉为"最先进的包管理工具"。 我们按照包管理工具的发展历史开始讲起&#xff1a; n…

切片工具tippecanoe的全网最详细的解释

1.下载和安装 tippecanoe工具是mapbox官方提供的一个服务端切片工具,因此它是运行在服务器上的,它比较友好的支持mac和linux机器。对于windows来讲,就比较麻烦了。 首先对于mac系统,你只需配置好自己的homebrew,保证homebrew能够正常下载东西。 然后只需要一个命令: …

Jmeter 压测工具进行压力测试

需求&#xff1a;接口需要进行压力测试&#xff0c;有减库存的场景&#xff0c;要求并发不能超库存&#xff0c;接口鉴权类似token方式校验。 一、jemter 下载安装Java Downloads | Oracle &#xff0c;下载安装可以自行翻帖子&#xff0c;很多教程&#xff0c;本次实验用的是…

用Python体素化3D网格和点云

推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 3D 数据的持续学习正在成为机器学习和理解我们周围世界的越来越重要的部分。 随着新的 3D 数据提取硬件&#xff08;如深度相机和 LiDAR&#xff09;在闭路电视、相机和智能手机中变得司空见惯&#xff0c;越来越多的人正…

法线贴图的类型

1、切线空间法线贴图 这是当今最常见的法线贴图&#xff0c;也是我们在本系列中讨论的法线贴图。它根据模型顶点的法线方向修改模型的法线方向&#xff08;因此我们必须控制lowpoly的顶点法线&#xff09;。 请记住&#xff0c;切线法线贴图是使用顶点指示的方向进行计算的。这…