vue3里前端生成二维码和解析二维码(不需要后端参与)

1.生成二维码

        1)安装qrcode

 npm install qrcode


        2)生成二维码代码

<template><el-input v-model="formData.designation"></el-input><el-input v-model="formData.people"></el-input><el-button type="primary" @click="generateQRCode">生成二维码</el-button><!-- 二维码展示 --><canvas ref="qrcodeCanvas"></canvas>
</template>
<script setup>import QRCode from 'qrcode';const formData = ref({designation:'',people:'',})const QRCodeType = ref(0)// 生成二维码const generateQRCode = async () => {try {// 获取 canvas 元素的引用const canvas = document.querySelector('canvas');// 将输入字段合并成一个字符串let data = generateString(formData.value);console.log(data)// 使用 qrcode 库生成二维码await QRCode.toCanvas(canvas, data || '', { errorCorrectionLevel: 'H' });QRCodeType.value = 1}catch (error) {console.error('Error generating QR code:', error);}// 对象合成字符串的方法const generateString = (formData) => {let result = ''for (const key in formData) {if (formData.hasOwnProperty(key)) {result += formData[key] + ','}}// 去掉末尾的逗号result = result.slice(0, -1)return result}
};
</script>

2.解析二维码

        1)安装  jsqr

npm install jsqr

        2)解析二维码代码

                父组件
<template><parseQRCode @get-code-data="getCodeData"></parseQRCode>
</template>
<script setup>
import parseQRCode from './components/parseQRCode.vue'
// 获取得到的二维码数据
const getCodeData = (vm) =>{const codeData = vm.split(',');console.log(codeData,'获取得到的二维码数据',vm)formData.value.designation = codeData[0]formData.value.people = codeData[1]
}
</script>
                子组件
<template><div><div @click="openFileInput" style="cursor: pointer;">从图像二维码导入</div><input id="fileInput" type="file" accept="image/*" style="display: none;" @change="handleFileChange"><!-- <div v-if="decodedValue">解析结果: {{ decodedValue }}</div><div v-else>未找到二维码</div> --></div>
</template><script setup>
import { ref } from 'vue';
import jsQR from 'jsqr';const decodedValue = ref(null);const emits = defineEmits(['get-code-data', 
])
const openFileInput = () => {const fileInput = document.getElementById('fileInput');if (fileInput) {fileInput.click();}
};const handleFileChange = (event) => {const file = event.target.files[0];if (!file) return;const reader = new FileReader();reader.onload = (event) => {const image = new Image();image.onload = () => {const canvas = document.createElement('canvas');const context = canvas.getContext('2d');canvas.width = image.width;canvas.height = image.height;context.drawImage(image, 0, 0);const imageData = context.getImageData(0, 0, image.width, image.height);const code = jsQR(imageData.data, image.width, image.height);if (code) {decodedValue.value = code.data;emits('get-code-data', code.data);} else {decodedValue.value = null;}};image.src = event.target.result;};reader.readAsDataURL(file);
};
</script>

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

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

相关文章

Python --- Python + Vs code的安装与使用(windows平台)

Python Vs code的安装与使用 今天是我第一次开始尝试用Python&#xff0c;然后我想借此机会记录一下整个安装过程和上手过程。之前一直都是用的matlab&#xff0c;这个东西不仅大而且收费&#xff0c;但不可否认的是。matlab的很多东西都做的比较好&#xff0c;但我一直用的都…

【Linux的进程篇章 - 进程终止和进程等待的理解】

Linux学习笔记---008 Linux之fork函数、进程终止和等待的理解1、fork函数1.1、什么是fork?1.2、fork的功能介绍1.3、fork函数返回值的理解1.4、fork函数的总结 2、进程的终止2.1、终止是在做什么&#xff1f;2.2、进程终止的3种情况 3、进程的终止3.1、进程终止的三种情况3.2、…

1.8.4 卷积神经网络近年来在结构设计上的主要发展和变迁——Inception-v2 和Inception-v3

1.8.4 卷积神经网络近年来在结构设计上的主要发展和变迁——Inception-v2 和Inception-v3 前情回顾&#xff1a; 1.8.1 卷积神经网络近年来在结构设计上的主要发展和变迁——AlexNet 1.8.2 卷积神经网络近年来在结构设计上的主要发展和变迁——VGGNet 1.8.3 卷积神经网络近年来…

阿里Canal使用

Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析&#xff0c;提供实时的数据订阅和消费服务的工具。它可以用来读取 MySQL 的 binlog 日志并转换成 JSON 格式的事件消息&#xff0c;然后将这些消息发布到下游的消息中间件&#xff0c;比如 RabbitMQ&#xff0c;以实现…

输入输出系统的发展历程

发展阶段&#xff1a;1.早期阶段&#xff1a;i/o设备种类较少&#xff0c;i/o设备与主存交换信息都必须通过CPU&#xff0c;当时的i/o设备具有以下特点&#xff0c;每个i/o设备都必须配有一套独立的逻辑电路与CPU相连&#xff0c;线路十分庞杂散乱。输入输出过程是穿插在CPU执行…

MySQL innoDB存储引擎多事务场景下的事务执行情况

一、背景 在日常开发中&#xff0c;对不同事务之间的隔离情况等理解如果不够清晰&#xff0c;很容易导致代码的效果和预期不符。因而在这对一些存在疑问的场景进行模拟。 下面的例子全部基于innoDB存储引擎。 二、场景&#xff1a; 2.1、两个事务修改同一行记录 正常来说&…

Java 对象的初始化顺序

在 Java 中&#xff0c;对象的初始化顺序都是遵循一定的规则的。这涉及到类的构造函数调用、字段初始化以及继承关系中的初始化顺序。 当涉及到继承时&#xff0c;初始化顺序如下&#xff1a; 父类静态变量和静态初始化块&#xff1a;按照声明的顺序执行。子类静态变量和静态…

自动化测试框架-senlenium(2)

目录 1.前言 2.鼠标点击 2.1click点击对象 2.2senk_keys在对象上模拟键盘输入 2.3清除对象输入的文本内容 2.4submit提交 2.5 text用于获取文本信息 ​编辑3.获取信息 3.1获取title 3.2获取url 1.前言 前面我们讲了如何定位元素,那么我们把元素定位到了以后,又如何…

Python的MATLAB使用

Python和MATLAB是两种不同的编程语言&#xff0c;它们各自拥有不同的生态系统和库。然而&#xff0c;你可以在Python中使用一些方法来实现与MATLAB类似的功能。以下是一些方法和库&#xff0c;可以帮助你在Python中实现MATLAB风格的编程&#xff1a; 1. NumPy: NumPy是Python中…

图论知识汇总

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

【力扣】104. 二叉树的最大深度、111. 二叉树的最小深度

104. 二叉树的最大深度 题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输…

ENSP防火墙配置策略路由及ip-link探测

拓扑 配置目标 1.A区域走ISP1&#xff0c;B区域走ISP2 2. isp线路故障时及时切换到另一条线路 配置接口及安全区域 配置安全策略 配置nat 配置默认路由 配置ip-link 配置策略路由 cl-1 cl-2 验证配置成功 策略路由 A走ISP1 B走ISP2 验证线路故障 isp1 in g0/0/0 shoutdow…

Qt——示波器/图表 QCustomPlot

一、介绍 QCustomPlot是一个用于绘图和数据可视化的Qt C小部件。它没有进一步的依赖关系&#xff0c;提供友好的文档帮助。这个绘图库专注于制作好看的&#xff0c;出版质量的2D绘图&#xff0c;图形和图表&#xff0c;以及为实时可视化应用程序提供高性能。QCustomPlot可以导出…

HWOD:走方格的方案数

一、自己的解题思路 1、(0,m)和(n,0) (0,m)表示处在棋盘的左边线&#xff0c;此刻能回到原点的路线只有一个&#xff0c;就是一路向上 (n,0)表示处在棋盘的上边线&#xff0c;此刻能回到原点的路线只有一个&#xff0c;就是一路向左 2、(1,1) (1,1)表示只有一个方格&#…

leetcode645-Set Mismatch

题目 集合 s 包含从 1 到 n 的整数。不幸的是&#xff0c;因为数据错误&#xff0c;导致集合里面某一个数字复制了成了集合里面的另外一个数字的值&#xff0c;导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重…

02 Git 之IDEA 集成使用 GitHub(Git同时管理本地仓库和远程仓库)

2 .IDEA 集成使用 GitHub&#xff08;Git同时管理本地仓库和远程仓库&#xff09; 首先在 IDEA 的设置中绑定 GitHub 的账号 先创建一个 test1.txt 文件&#xff0c;内容为 aaa. 最上一栏 VCS&#xff0c; SHARE ON GitHub&#xff0c;然后选择要发送到远程仓库的文件即可。…

Vue实现防篡改水印的效果。删除元素无效!更改元素属性无效!支持图片、元素、视频等等。

1、演示 2、水印的目的 版权保护&#xff1a;水印可以在图片、文档或视频中嵌入作者、品牌或版权所有者的信息&#xff0c;以防止未经授权的复制、传播或使用。当其他人使用带有水印的内容时&#xff0c;可以追溯到原始作者或版权所有者&#xff0c;从而加强版权保护。 身份识…

基于单片机的天然气报警系统设计

摘要:为了有效减少我国家庭火灾事故的发生,提高人民家庭的安全水平,给人们带来更为舒适放心的生活环境,设想如果可以研发结构简单、经济实用的家庭烟雾报警器实现天然气报警系统的智能化,那就可以大幅度地减少家庭火灾事故发生的概率。本文根据单片机原理与传感器理论,提…

跟TED演讲学英文:A new way to build AI, openly by Percy Liang

A new way to build AI, openly Link: https://www.ted.com/talks/percy_liang_a_new_way_to_build_ai_openly? Speaker: Percy Liang Date: October 2023 文章目录 A new way to build AI, openlyIntroductionVocabularyTranscriptSummary后记 Introduction Today’s AI …

i/o设备与主机信息传送的控制方式:

i/o设备与主机信息传送的控制方式&#xff1a;程序查询方式&#xff1a; 是由CPU通过程序不断查询i/o设备是否以做好准备&#xff0c;从而控制i/o设备与主机交换信息&#xff0c;要求i/o设备内设置一个能反映i/o设备是否已准备就绪的状态标记。CPU在反复查询中&#xff0c;犹如…