Vue2 qrcode+html2canvas 实现二维码的生成和保存

1.安装

npm install qrcode

npm install html2canvas

2.引用

import QRCode from 'qrcode'

import html2canvas from 'html2canvas'

效果:

1.

二维码生成: 

 下载二维码图片:

二维码的内容:

实现代码:

<template><div class="main-body module-contain"><div>我是测试的二维码内容h5页面: http://xxxx:8080/qrcodeContain</div><div class="generateQRcode-top"ref="qrcodeBox"v-show="isShowText"><!-- 我是测试的二维码内容 --><div ref="qrcodeContainer"class="qr-code"></div><div class="qr-txt">产品编号: xxxx</div></div><el-button type="primary"@click="generateQRCode">生成二维码</el-button><el-button type="primary"@click="saveQRCode">保存二维码</el-button></div>
</template><script>
import QRCode from 'qrcode'
import html2canvas from 'html2canvas'
export default {data () {return {isShowText: false,qr: 'http://xxxx:8080/qrcodeContain' // 二维码内容-网址/数字/字母 // 可以用网上的地址测试,例如:https://www.bilibili.com/guochuang/?spm_id_from=333.1007.0.0}},components: {},mounted () {},methods: {// 生成二维码generateQRCode () {this.isShowText = true//每次生成的时候清空内容,否则会叠加,二维码背景色透明会一目了然if (this.$refs.qrcodeContainer) {this.$refs.qrcodeContainer.innerHTML = ''}QRCode.toDataURL(this.qr, { errorCorrectionLevel: 'H' }, (err, url) => {if (err) console.error(err)// 将二维码URL设置到容器的背景图片this.$refs.qrcodeContainer.style.backgroundImage = `url(${url})`})},// 保存二维码async saveQRCode () {// 使用html2canvas将二维码容器转换为图片try {const canvas = await html2canvas(this.$refs.qrcodeBox)// 创建一个图片元素const img = new Image()img.src = canvas.toDataURL('image/png')// 创建一个链接元素const link = document.createElement('a')// 设置下载的文件名link.download = '二维码.png'// 触发点击link.href = img.srclink.click()} catch (error) {console.error(error)}},}
}
</script><style lang="less" scoped>
.module-contain {.generateQRcode-top {display: flex;// justify-content: space-between;// align-items: center;width: 360px;// height: 200px;margin: 20px 0;background-color: #fff;border: 1px solid #eee;.qr-code {width: 180px;height: 180px;background-position: 50% 50%;background-repeat: no-repeat;background-size: contain;text-align: center;font-size: 20px;font-weight: bold;}.qr-txt {padding: 12px 0;font-size: 14px;}}
}
</style>

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

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

相关文章

重学SpringBoot3-SpringApplicationRunListener

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-SpringApplicationRunListener 1. 基本作用2. 如何实现2.1. 创建SpringApplicationRunListener2.2. 注册SpringApplicationRunListener2.3. 完整示例 3.…

初始爬虫5

响应码&#xff1a; 数据处理&#xff1a; re模块&#xff08;正则表达式&#xff09; re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明&#xff1a; 1. 基本用法 1.1 匹配模式 …

大势智慧与山东省国土测绘院签署战略合作协议

9月6日&#xff0c;山东省国土测绘院&#xff08;后简称山东院&#xff09;与武汉大势智慧科技有限公司&#xff08;后简称大势智慧&#xff09;签署战略合作协议。 山东院院长田中原、卫星应用中心主任相恒茂、基础测绘中心主任魏国忠、卫星应用中心高级工程师张奇伟&#xf…

记一次实战中对fastjson waf的绕过

最近遇到一个fastjson的站&#xff0c;很明显是有fastjson漏洞的&#xff0c;因为type这种字符&#xff0c;fastjson特征很明显的字符都被过滤了 于是开始了绕过之旅&#xff0c;顺便来学习一下如何waf 编码绕过 去网上搜索还是有绕过waf的文章&#xff0c;下面来分析一手&a…

性能测试-断言+自学说明(十二)

一、响应断言 需求;jmeter请求百度&#xff0c;断言响应结果中是否包含“百度一下&#xff0c;你就知道” 1、位置&#xff1a; http请求-断言-响应断言 2、类型 响应文本&#xff1a;断言响应体中包含的字符串 响应代码&#xff1a;断言响应状态码 3、断言步骤&#xf…

全文带你轻松备考OCM

OCM&#xff0c;作为Oracle公司授予的顶级专业认证&#xff0c;是数据库领域从业者梦寐以求的技术巅峰标志。它不仅是对个人技术深度与广度的全面肯定&#xff0c;更是职业道路上的一块重要里程碑。在踏上这段挑战之旅前&#xff0c;深入洞察OCM认证的精髓、考试细节及备考策略…

想要快速准备好性能数据?方法这不就来了!

性能测试的一般流程 收集性能需求——>编写性能脚本——>执行性能测试——>分析测试报告——>系统性能调优。 在收集性能需求后&#xff0c;我们会思考&#xff1a; 1.负载测试时并发时需要多少数据&#xff1f;例&#xff1a;登录&#xff1b; 2.DB数据是否和…

Spring-cloud-gateway报错问题总结

1. 访问接口出现 There was an unexpected error (typeService Unavailable, status503).Unable to find instance for order 假设我们有服务 spring-appication-name: order 但命名路由id 也为order 就会出现这类错误 因为 gateway 有默认路由

喜讯!和鲸科技荣获「2024 爱分析·数据智能优秀厂商」

9 月 13 日&#xff0c;2024 爱分析第六届数据智能高峰论坛圆满举办。会上正式公布了“2024 爱分析数据智能优秀厂商”&#xff0c;和鲸科技凭借在数据智能领域内的卓越成果与创新应用成功入选。 2024爱分析数据智能优秀厂商奖项旨在评选出在数据智能领域&#xff0c;综合实力突…

用Druid连接池,出现系统找不到指定路径的解决方案

运行时抛出异常&#xff08;系统找不到指定路径&#xff09;&#xff1a; 解决方法&#xff1a; 用 . 代替项目名就可以成功运行

Weblogic部署

要安装weblogic&#xff0c;首先要有java环境&#xff0c;因此需要先安装jdk。 这里需要注意&#xff0c;weblogic版本不同&#xff0c;对应的jdk版本也不同&#xff0c;我在这里就踩了很多坑&#xff0c;我这里下载的是fmw_12.2.1.4.0_wls_lite_generic.jar对应的是jdk-8u333…

冯诺依曼体结构与系统

冯诺依曼结构 我们的计算机&#xff0c;以及服务器&#xff0c;还有我我们日常使用的洗衣机都遵循冯诺依曼体结构。 以我们日常使用qq聊天时举例&#xff0c;冯诺依曼体结构可以这样画 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成 输入单元…

SpringBoot Jar 包加密防止反编译实战

今天给大家分享一个 SpringBoot 程序 Jar 包加密的方式&#xff0c;通过代码加密可以实现无法反编译。 应用场景就是当需要把公司的产品部署到友方公司或者其他公司时&#xff0c;可以防止客户直接反编译出来源码&#xff0c;大大提升代码的安全性。 版本 springboot 2.6.8j…

rabbitmq容器化部署

需求 容器化部署rabbitmq服务 部署服务 找到如下官网信息版本 官网版本发布信息 这里看到最新版本是3.13版本&#xff0c;这里在3.13中找一个版本下载容器镜像即可。 找到dockrhub.com中 找到3.13.2版本镜像。 容器服务安装此处省略 现在下载容器镜像需要配置容器代理 ~#…

Java静态代理和动态代理

通过一个小案例整理描述静态代理和动态代理 给大家举个简单例子。在一个公司中&#xff0c;老板处于上层&#xff0c;客户在下层。因每天来访客户众多&#xff0c;老板本应只考虑战略和赚钱&#xff0c;却被一些不重要的客户耽误不少时间。于是老板招聘了一个秘书&#xff0c;专…

大模型进行Query改写时如何提升性能

Query改写方法有子问题拆解、短语提取、回溯检索、虚拟文档等方法。见&#xff1a;https://blog.csdn.net/qq_43814415/article/details/138606669 llama-index的实现见&#xff1a;https://zhaozhiming.github.io/2024/05/13/query-rewrite-rag/ 这里总结实际使用大模型改写时…

Day09-StatefuleSet控制器

Day09-StatefuleSet控制器 0、昨日内容回顾1、StatefulSets控制器1.1 StatefulSet概述1.2 StatefulSets控制器-网络唯一标识之headless1.3 StatefulSets控制器-独享存储 2、metric-server2.1 metric-server概述2.2 部署metric-server:2.3 hpa案例 3、helm概述3.1 安装helm3.2 h…

并行程序设计基础——并行I/O(5)

目录 一、分布式数组文件的存取 1.1 MPI_TYPE_CREATE_DARRAY 1.2 MPI_TYPE_CREATE_SUBARRAY 二、小结 上一节我们对并行I/O中共享文件的存取操作进行了介绍,本节继续介绍MPI-2并行I/O的最后内容:分布式数组文件的存取。 一、分布式数组文件的存取 许多情况下,M…

ModbusTCP/RTU转Ethernet/IP(CIP)-Modbus设备与罗克韦尔AB的PLC之间通讯

IGT-DSER智能网关模块支持西门子、三菱、欧姆龙、罗克韦尔AB等各种品牌的PLC之间通讯&#xff0c;同时也支持PLC与Modbus协议的工业机器人、智能仪表、变频器等设备通讯。网关有多个网口、串口&#xff0c;也可选择WIFI无线通讯。无需PLC内编程开发&#xff0c;只要在IGT-DSER智…

两段有趣的代码(C语言函数指针)

目录 part1part2 两段有趣的代码 part1 (*(void (*)())0)();我们知道函数指针&#xff1a; void (*p)()去掉函数指针变量名就是函数指针的类型&#xff1a; void (*)()那这段代码我们就可以理解为将0强制转换为函数指针类型&#xff0c;再进行解引用;进行调用函数&#xff…