vue前端生成二维码并提供二维码下载

在一个管理后台的开发过程中使用到了需要前端自行生成分享二维码,并提供二维码下载功能,网上的解决方案很多,最终自己做完的思路和代码整理记录方便后续学习使用!
vue版本为2.x
具体实现步骤:

  1. 下载安装依赖(下载安装命令): npm install qrcanvas
  2. 因为我只在一个页面用到了,所以只在使用页面导入 qrcanvas:import { qrcanvas } from ‘qrcanvas’
  3. html部分的代码
<div id="shareQrcode" ref="shareQrcode" class="share-qrcode" style="width:256px;margin:0 auto;" ></div>

具体的案例中二维码是一个弹出框,全局代码如下(案例使用的前端框架是Element ui):

<el-dialog:visible.sync="qrcodeDialogVisible"title="二维码"width="30%"center><div id="shareQrcode" ref="shareQrcode" class="share-qrcode" style="width:256px;margin:0 auto;" /><span slot="footer" class="dialog-footer"><el-button @click="qrcodeDialogVisible = false">关 闭</el-button><el-button type="primary" @click="downLoadQrcode">下载二维码</el-button></span></el-dialog>

export default 代码如下:

export default {name: 'ComponentsName',components: {},data() {return {qrcode: '',qrcodeDialogVisible: false, // 分享二维码弹窗}},computed: {},created() {},methods: {// 点击下载按钮下载二维码图片downLoadQrcode() {let imgSrc, canvasif (document.getElementById('shareQrcode').childNodes[0]) {canvas = document.getElementById('shareQrcode').childNodes[0]imgSrc = this.CanvasToImage(canvas).getAttribute('src')const alink = document.createElement('a')alink.href = imgSrcalink.download = 'shareQrcode.png'alink.click()}},// canvas 转换成图片, 从canvas中提取图片imageCanvasToImage(canvas) {// 新Image对象,可以理解为DOMvar image = new Image()// canvas.toDataURL 返回的是一串Base64编码的URL,当然,浏览器自己肯定支持// 指定格式PNGimage.src = canvas.toDataURL('image/png')return image},// 分享二维码弹窗popQrcode() {this.qrcodeDialogVisible = trueconst colorFore = '#4169E1'const colorOut = '#CD5C5C'const colorIn = '#191970'this.qrcode = ''this.$nextTick(() => {this.qrcode = qrcanvas({cellSize: 8,data: location.href,effect: { round: 0.4 },correctLevel: 'M',foreground: [// 前景色{ style: colorFore },// 外方块位置{ row: 0, rows: 7, col: 0, cols: 7, style: colorOut },{ row: -7, rows: 7, col: 0, cols: 7, style: colorOut },{ row: 0, rows: 7, col: -7, cols: 7, style: colorOut },// 内方块位置{ row: 2, rows: 3, col: 2, cols: 3, style: colorIn },{ row: -5, rows: 3, col: 2, cols: 3, style: colorIn },{ row: 2, rows: 3, col: -5, cols: 3, style: colorIn }],background: '#f5f5f5',padding: 12})// 判断是否有子节点,如果已经有则删除原有的,然后再新增子节点if (document.getElementById('shareQrcode').childNodes[0]) {this.$refs.shareQrcode.removeChild(document.getElementById('shareQrcode').childNodes[0])}this.$refs.shareQrcode.appendChild(this.qrcode)})}}
}

完成效果:
在这里插入图片描述

注意: 在options里配置effect如果未生效的话检查所安装依赖是否支持effect属性,默认简版是不支持该属性的。

关于二维码生成参考文档:

  1. qrcanvas
  2. 新版 JavaScript 二维码生成工具(原来的 jsqrgen)
  3. QrCanvas

本文档纯属个人学习记录,如果各位大佬有更好的方案可以留言交流,可供借鉴学习,感谢!

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

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

相关文章

总结本人学习b站黑马前端课程,各部分案例汇总

目录 1.Ajax&#xff1a; 对应课程&#xff1a; b站黑马JavaScript的Ajax案例代码——新闻列表案例 b站黑马JavaScript的Ajax案例代码——评论列表案例 b站黑马JavaScript的Ajax案例代码——聊天机器人案例 b站黑马JavaScript的Ajax案例代码——图书管理案例 2.ES6面向对…

前端——动态生成表格

案例分析 因为表格数据是不断更新的&#xff0c;我们需要js 动态生成。 这里我们模拟数据&#xff0c;自己定义好数据。 数据我们采取对象形式存储。所有的数据都是放到tbody里面的行里面。因为行很多&#xff0c;我们需要循环创建多个行&#xff08;对应多少人&#xff09;每…

Methodot低代码电影票房管理系统实战案例(二):前端低代码搭建系统后台

本次系统后台实战将使用Methodot应用工厂中的前端低代码组件完成搭建&#xff0c;无需注册域名、购买云服务器、虚拟机等&#xff0c;可在Methodot云端一体化完成开发、交付、访问、运维&#xff0c;3s即可部署至线上 免运维&#xff0c;在Methodot上可直接开发部署到线上 本次…

c语言源码代码生成器,SoEasyPlatform 代码生成器

介绍 一款轻量级开源的代码生成器,相对较动软代码生成器而言要轻量的多,支持多种数据库,所用到dll组件也都在github有源码,代码非常的简单有点基础的看源码可以把生成的项目改成自已的风格。 特色 该代码生成器最大的特点就三个简单 ,无需安装,生成的代码 简单并且有教学…

基于GPT-4的免费代码生成工具

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

前端直接生成GIF动态图实践

前言 去年在博客中发了两篇关于GIF动态生成的博客&#xff0c;GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探&#xff0c;在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问&…

利用JS代码完成动态生成表格案例及解析

思路&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&…

屏蔽必应(bing)搜索引擎点开一个页面下面会出现“浏览 6 个相关页面”的网页推荐方法

如以上图片显示&#xff0c;“浏览 6 个相关页面” 的推荐内容是网页里面的js实现的&#xff0c;无法取消&#xff0c;微软官方也回复说不能关闭的&#xff0c;只能通过浏览器的屏蔽广告插件可以实现&#xff1a; 我用的是这个uBlock Origin插件根据这位大佬的帖子安装的&…

基于chatgpt-on-wechat的微信个人对话机器人搭建

1.开源项目选定 现在gpt很火,git中大佬们都创建了很多高星项目,我这里选用了chatgpt-on-wechat(项目地址:https://github.com/zhayujie/chatgpt-on-wechat),这个项目在扩展时也很舒服,大家可以去拉下来看看,学习源码才能方便后续的扩展 2.服务器选定 国内服务:前置条件需要走…

【模仿】调用微信聊天功能和分享功能

今天整理个不是问题的问题&#xff0c;没学到啥&#xff0c;主要完成功能&#xff1a; 老大要求能调用手机号码然后通过微信聊&#xff0c; 我去&#xff0c;说白了老大看到了应用-通讯录plus-的微信功能&#xff0c;要我模仿。 首先&#xff0c;坑啊&#xff0c;我以为是开放…

iOS微信QQ聊天界面的UI框架以及Socket简单实现群聊功能

7.1日更新 Python3 TCP Demo相关 https://blog.csdn.net/Deft_MKJing/article/details/80851879 2.2日更新&#xff0c;socket简易群聊通信&#xff0c;之前实现的是静态本地聊天模拟 最新版本Demo传送门 1.需要的先下载下来&#xff0c;先开启SocketSeverce 2 这个服务器代…

JetChat-简仿微信聊天应用

Swift5.0编写的简仿微信聊天应用&#xff0c;完美支持表情键盘、单聊、群聊、本地消息会话缓存、朋友圈、白天和黑夜主题模式 Examples - 主要界面展示 聊天朋友圈 白天模式黑夜模式 主要技术运用 聊天功能采用RxSwiftMVVM响应式架构设计&#xff0c;通过ViewModel合理过渡处…

程序员聊天必备表情包,收好不谢

现在聊天用表情代替文字已经是潮流了&#xff0c;往往一张图片比文字更能表达内心的想法&#xff0c;今天我们就来了解下程序员聊天时都用些什么表情。 程序员怒产品 &#xff1a; 被吐槽写BUG时怎么办 产品又来提需求 产品又要改需求&#xff0c;怎么办 产品说&#xff0c;这个…

【华为云技术分享】云图说|全新华为云云备份服务:为您的数据提供三合一的保障

云上道路千万条&#xff0c;数据安全第一条。当不幸在云上发生病毒袭击、误删除、软件故障等“车祸”时&#xff0c;如果没有事先对数据进行保护&#xff0c;业务将会中断&#xff0c;并且将导致数据丢失、损坏的后果&#xff01; 华为云云备份就像安全气囊&#xff0c;关键时…

云存储——华为网盘

华为网盘 编辑本段信息 [1] 华为网盘是华为 软件公司&#xff08;下简称 华为公司&#xff0c;华为投资控 [2] 股有限公司的子公司&#xff09;旗下的互联网存储服务。首次注册为5G容量&#xff0c;可以通过各种渠道来获得更多 网络存储空间。可以当作U盘使用,但比优盘方便安全…

利用群晖nas备份华为手机数据

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、确保手机和nas处于同一局域网二、nas启用smb服务&#xff0c;并且设置正确1.启用smb服务2.在设置最小SMB协议时&#xff0c;会有提示不安全因数的可能。但是…

阿里云/华为云云盘挂载步骤

参拷文章&#xff1a;linux centos7 磁盘分区、挂载 初始化Linux数据盘&#xff08;fdisk&#xff09; 挂在的相关指令 #查看磁盘及分区信息 fdisk -l看到vdb没有启用 对/dev/vdb进行分区操作 fdisk /dev/vdb总结输入&#xff1a;n > p > 回车 > 回车 》 回车 》 …

DTT年度收官圆桌π,华为云8位技术专家的年末盘点

摘要&#xff1a;收下这份DTT年度收官圆桌π总结&#xff0c;在新的一年心想事成&#xff0c;技术上更上一层楼。 本文分享自华为云社区《DTT年度收官圆桌π&#xff0c;华为云8位技术专家的年末盘点》&#xff0c;作者&#xff1a;华为云社区精选 。 在2022年的年末&#xff…

【华为云技术分享】打卡APIG服务专享版,打造全栈API治理方案

伴随企业的数字化转型跟IT架构演进&#xff0c;越来越多的企业&组织选择以API的方式实现能力的开放跟通讯&#xff0c;这部分也成了系统集成的交界点。通过三组数据来看整体趋势 2017年&#xff0c;有50%的B2B商业合作将通过API完成2018年&#xff0c;75%的财富500强公司将…

华为云混合云备份解决方案、云南华为云数据备份存储、备份软件解决方案

标题 一、数据是企业的生命线&#xff0c;备份系统应作为IT基础设施进行建设 标题 二、 数据爆炸性增长带给数据备份的挑战 标题 三、混合云备份&#xff1a;优化企业运营成本的重要手段 1、按需预定 备份软件按需使用与付费 备份服务器按需使用与付费 存储空间按需使用与付…