vue中qrcanvas生成二维码并且下载二维码

vue中qrcanvas生成带logo二维码并且下载二维码

1.引入qrcanvas模块

cnpm install --save qrcanvas

//parkage.json 中引入 
"qrcanvas": "^3.1.2"
import { qrcanvas } from 'qrcanvas'
2.前端vue页面展示
 <el-buttonsize="mini"type="text"icon="el-icon-tickets"@click="generateQRCode(scope.row)">二维码</el-button>
<!--
展示二维码窗口
--><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>
3.js生成

设置属性

export default {name: 'ParkLot',props:{canvasWidth:{default:200,type:Number},canvasHeight:{default:200,type:Number}},data () {return {}}

js代码:

 //生成二维码generateQRCode(row){const uuids = "123456";/* getGenerateQrCode(uuids).then(response => {});*/this.troubleListName = row.troubleListNamethis.popQrcode(uuids)},// 点击下载按钮下载二维码图片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 = this.troubleListName + 'Qrcode.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(uuid) {this.qrcodeDialogVisible = trueconst colorFore = '#0d0d0e'const colorOut = '#181717'const colorIn = '#111113'this.qrcode = ''this.$nextTick(() => {this.qrcode = qrcanvas({cellSize: 8,data: uuid,effect: { round: 0.4 },correctLevel: 'M',width: this.canvasWidth,//宽height: this.canvasHeight,//高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)console.log(this.qrcode)//生成logolet myCanvas = this.qrcodelet ctx = myCanvas.getContext('2d')// 在Canvas画布 添加图片let img = new Image()img.crossOrigin = 'Anonymous';//解决Canvas.toDataURL 图片跨域问题//图片路径img.src =  require('@/logo/123.png');img.onload = ()=>{//第一个设置的元素,第二三是位置,后面两个是宽和高let codeWidth = (this.canvasWidth-70)/2let codeHeight = (this.canvasHeight-70)/2ctx.drawImage(img, codeWidth, codeHeight,this.canvasWidth*0.25,this.canvasHeight*0.25)}})},

我是一个后端开发人员,前端写的有什么问题,欢迎大家来指点我一下。。。。。。

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

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

相关文章

FFmpeg转码流程和常见概念

视频格式&#xff1a;mkv&#xff0c;flv&#xff0c;mov&#xff0c;wmv&#xff0c;avi&#xff0c;mp4&#xff0c;m3u8&#xff0c;ts等等 FFmpeg的转码工具&#xff0c;它的处理流程是这样的&#xff1a; 从输入源获得原始的音视频数据&#xff0c;解封装得到压缩封装的音…

企业微信机器人发送文本、图片、文件、markdown、图文信息

import requests import base64 import hashlib import json # 机器人地址的key值 key"811a1652-60e8-4f51-a1d9-231783399ad2" def path2base64(path):"""文件转换为base64:param path: 文件路径:return:"""with open(path, "rb…

设计模式-模板模式

设计模式专栏 模式介绍模式特点应用场景模板模式和工厂模式区别代码示例Java实现模板模式python实现模板模式 模板模式在spring中的应用 模式介绍 模板模式是一种行为型设计模式&#xff0c;它通过将算法的骨架抽象成一个模板方法&#xff0c;将具体的操作留给子类来实现。这种…

iPhone 与三星手机:哪一款最好?

三星比苹果好吗&#xff1f;还是苹果比三星更好&#xff1f; 小米公司如何称霸全球智能手机市场&#xff1f;小米公司&#xff0c;由雷军创立于2010年&#xff0c;是一家领先的电子巨头。以其MIUI系统和互联网服务闻名&#xff0c;小米公司在全球智能手机市场中稳居前列。小米…

网络(七)路由协议以及相关配置

目录 一、路由器的工作原理 二、路由表的形成 2.1 直连网段 2.2 非直连网 2.3 路由表解析 2.3.1 查看路由表 2.3.2 解析 三、静态路由和默认路由 1. 静态路由 1.1 定义 1.2 特点 2. 默认路由 2.1 定义 2.2 特点 四、静态路由和默认路由的配置 1. 静态路由配置…

flutter学习-day12-可滚动组件和监听

&#x1f4da; 目录 简介可滚动组件 SingleChildScrollViewListView separated分割线无限加载列表带标题列表 滚动监听和控制 ScrollController滚动监听NotificationListener滚动监听 AnimatedList动画列表滚动网格布局GridView 横轴子元素为固定数量横轴子元素为固定最大长度…

[wp]第四届江西省赣网杯网络安全大赛-web 部分wp

第四届江西省赣网杯网络安全大赛&#xff08;gwb&#xff09;线上预选赛 因为学业繁忙 只玩了1小时&#xff0c;后续看看补一下这些 2023gwb-web1 九宫格拼图 2023gwb-web2 $filexxx;extract($_GET);if(isset($fun)){$contenttrim(file_get_contents($file));if($fun!&…

MLX:苹果 专为统一内存架构(UMA) 设计的机器学习框架

“晨兴理荒秽&#xff0c;带月荷锄归” 夜深闻讯&#xff0c;有点兴奋&#xff5e; 苹果为 UMA 设计的深度学习框架真的来了 统一内存架构 得益于 CPU 与 GPU 内存的共享&#xff0c;同时与 MacOS 和 M 芯片 交相辉映&#xff0c;在效率上&#xff0c;实现对其他框架的降维打…

uniapp之屏幕右侧出现滚动条去掉、隐藏、删除【好用!】

目录 问题解决大佬地址最后 问题 解决 在最外层view上加上class“content”;输入以下样式。注意&#xff1a;两个都必须存在在生效。 .content {/* 跟屏幕高度一样高,不管view中有没有内容,都撑开屏幕高的高度 */height: 100vh; overflow: auto; } .content::-webkit-scrollb…

【JavaWeb】往浏览器打印一个hello world

上集:建一个web项目 第一步&#xff1a;建好Servlet类的文件 右键src&#xff0c;建一个class 就行 第二步&#xff1a;编代码 可以直接复制粘贴 用来测试的类 import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; //↓是注解&#xff0…

Java 基础学习(十一)File类与I/O操作

1 File类 1.1 File类概述 1.1.1 什么是File类 File是java.io包下作为文件和目录的类。File类定义了一些与平台无关的方法来操作文件&#xff0c;通过调用File类中的方法可以得到文件和目录的描述信息&#xff0c;包括名称、所在路径、读写性和长度等&#xff0c;还可以对文件…

Graphics Profiler 使用教程

GraphicsProfiler 使用教程 1.工具简介&#xff1a;2.Navigation介绍2.1.打开安装好的Graphics Profiler。2.2.将手机连接到计算机&#xff0c;软件会在手机中安装一个GraphicsProfiler应用(该应用是无界面的&#xff09;。2.3.Show files list2.4.Record new trace2.4.1.Appli…

听GPT 讲Rust源代码--src/tools(13)

File: rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs 在Rust源代码中&#xff0c;路径为rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs的文件是为了处理Rust代码中的不一致实现问题而存在的。…

Linux 动态库和静态库

文章目录 前言动态库创建和使用静态库创建和使用动态库和静态库差异生成过程的差异运行效果的差异 补充说明库的名称的注意事项库的搜索路径的方法什么是位置无关代码动态链接与静态链接/usr/lib 和 /usr/local/lib 前言 动静态库的创建和使用部分更多的是意在说明动态库和静态…

关于枚举的简单理解

1. 枚举的简单认识 1.1 枚举的引入 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式如下面的代码所示&#xff1a; public static final int RED 1; public static final int GREEN 2; public…

【MySQL】(DDL)总结

总结&#xff1a; 1.DDL数据库操作 show database; //查看当前创建的数据库 create database 数据库名; //创建数据库 use 数据库; //切换数据库 select database(); //查看当前所处的数据库(当前进入的那个数据库) drop database 数据库名; //删除数据库名 2.DDL表操作 …

鸿蒙开发之网络请求

//需要导入http头文件 import http from ohos.net.http//请求地址url: string http://apis.juhe.cn/simpleWeather/queryText(this.message).maxFontSize(50).minFontSize(10).fontWeight(FontWeight.Bold).onClick(() > {console.log(请求开始)let req http.createHttp()…

【音视频 | H.264】H.264视频编码及NALU详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

2023“楚怡杯”湖南省赛“信息安全管理与评估“--数字取证调查(高职组)

2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书 2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书第一阶段竞赛项目试题第二阶段竞赛项目试题第二部分 数字取证调查:需要环境私聊博主:2023“楚怡杯”湖南省“信息安全管理与评估”(高职组)任务书…

C语言——谁考了第k名(头歌编程刷题)

目录 一、题目描述&#xff1a; 二、输入格式&#xff1a; 三、输出格式&#xff1a; 四、输出样例&#xff1a; 五、输出样例&#xff1a; 六、代码呈现&#xff1a; 一、题目描述&#xff1a; 在一次考试中&#xff0c;每个学生的成绩都不相同&#xff0c;现知道了每个…