vue 使用 html2canvas 截屏并下载图片至本地(重点兼容ie浏览器)

news/2024/5/20 23:45:36

安装html2canvas:

npm install --save html2canvas

注意:如果是某些原因不能npm的话就直接把依赖包拷贝到node_modules就可以啦

html:

<div class="details-box" v-show="detailsFormShow"><div class="details-inner"><!-- 截图区域 --><div ref="cutImageBox">…………</div><!-- 按钮部分 --><div class="btns"><el-buttontype="primary"@click="saveImage"size="small"style="margin-right: 30px">保存为图片</el-button><el-button type="primary" @click="detailsFormShow = false" size="small">关闭</el-button></div></div></div>

script:

引入html2canvas

import html2Canvas from "html2canvas";

methods:

重点:这个方法除了ie浏览器基本都支持,但在ie是不能用的

//保存图片这个方法除了ie浏览器基本都支持saveImage() {// 第一个参数是需要生成截图的元素,第二个是自己需要配置的参数,宽高等html2canvas(this.$refs.creditQrCodeShare, {backgroundColor: null, //画出来的图片有白色的边框,不要可设置背景为透明色(null)useCORS: true, //支持图片跨域scale: 1, //设置放大的倍数}).then((canvas) => {// 把生成的base64位图片上传到服务器,生成在线图片地址let url = canvas.toDataURL("image/png"); // toDataURL: 图片格式转成 base64this.imgUrl = url;//将图片下载到本地console.log(url,67)let a = document.createElement("a"); // 生成一个a元素let event = new MouseEvent("click"); // 创建一个单击事件a.download = name || "截图名称"; // 设置图片名称没有设置则为默认a.href = this.imgUrl; // 将生成的URL设置为a.href属性a.dispatchEvent(event); // 触发a的单击事件});},

在网上查了好多资料好多是说用这个方法IE浏览器可以用,但我试了是不行的:

if (userAgent.includes("Trident")) {let arr = image.split(',');let mime = arr[0].match(/:(.*?);/)[1];let bstr = atob(arr[1]);let n = bstr.length;let u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}window.navigator.msSaveBlob(new Blob([u8arr], {type: mime}), `${value}.jpg`);}

重点:想要在ie浏览器上用这个html2canvas来将html保存为图片并且在本地保存就要让后端来配合让其转为文件流来下载保存。可能写的有点儿乱,但如果是发现IE浏览器不能下载图片就跟后端商量用这个方式,其他的方法我都试过了都没用

1.//让后端写一个接口,你给它传`this.imgUrl`   转为base64位的参数。const htrs = window.location.hostconst pste = window.location.protocolconst newRowder = `${pste}//${htrs}${baseURL}/ieriepf/sdfjjfbase64`let aLink = document.createElement("a");aLink.href = downloadUrl;aLink.download = `${downloadName}.jpg`;document.body.appendChild(aLink);aLink.click();document.body.removeChild(aLink);

http://www.mrgr.cn/p/67254277

相关文章

BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究

BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究 随着通信与网络技术的不断发展,通信与网络设备的使用不断增加。电源作为通信与网络设备的重要组成部分之一,在其稳定工作中起到至关重要的作用。AC/DC电源模块作为一种常用的电源转换器,广泛应用于通信与网络设备中。 一…

AWVS(acunetix) 安装详细教程

一、软件介绍Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。AWVS官方网站是:http://www.acunetix.com/ 软件有window版本,linux版本,还可以docker安装 二、下载安装 官方下载地址: h…

国密算法SM3-java实现

aven依赖<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.56</version> </dependency> SM3Utilsimport org.bouncycastle.crypto.digests.SM3Digest; import org.bouncy…

区块链 | IPFS:Merkle DAG

&#x1f98a;原文&#xff1a;IPFS: Merkle DAG 数据结构 - 知乎 &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。 1 Merkle DAG 的简介 Merkle DAG 是 IPFS 系统的核心概念之一。虽然 Merkle DAG 并不是由 IPFS 团队发明的&#xff0c;它来自…

uniapp:抖音PK进度条(nvue)

nvue中,仿抖音PK进度条效果, <template><view class="index" :style="{width:windowWidth+px,height:index_windowHeight+px,paddingTop:windowTop+px}"><view class="pk"><text class="pk_jindu_left_val fsz-24 …

【OpenGL4.6】VS2022安装OpenGL4.6的全过程

文章目录 一、说明二、vs2022环境安装2.1. 安装vs20222.2 为OpenGL专门建立目录 三、下载安装cmake&#xff0c;用于编译源代码3.1 为什么安装Cmake3.2 下载和安装Cmake 四、下载安装glfw&#xff0c;用于窗口界面4.1 设置glfw库&#xff0c;用于创建窗体4.2 如何使用glfw库? …

密码学《图解密码技术》 记录学习 第十二章

目录 第十二章 12.1 骡子的锁匠铺 12.2 本章学习的内容 12.3 使用随机数的密码技术 12.4 随机数的性质 12.4.1 对随机数的性质进行分类 12.4.2 随机性 12.4.3 不可预测性 12.4.4 不可重现性 小测验 1 骰子 &#xff08;答案见 1…

time:Python的时间时钟处理

前言 time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。 获取各种时钟 既然time库提供了多种类型的时钟。下面我们直接来获取这些时钟,对比其具体的用途。具体代码如下: import timeprint(time.monotonic()) print(time.monotonic_…

时间函数的简单理解和应用(time.h)

目录关于时间的函数及tm结构体描述对函数的简单理解操作函数功能实现 关于时间的函数及tm结构体描述time.h头文件中常用的几个函数描述如下:序号 函数&描述1 time_t time(time_t *tloc)最基础的函数,计算当前时间,并返回成 time_t(aka long int)格式而且返回值是从Epoch…

FastAPI vs Flask: 选择最适合您的 Python Web 框架

文章目录 1. 简介2. 安装和设置3. 路由和视图4. 自动文档生成5. 数据验证和序列化6. 性能和异步支持结论 在 Python Web 开发领域&#xff0c;FastAPI 和 Flask 是两个备受欢迎的选择。它们都提供了强大的工具和功能&#xff0c;但是在某些方面有所不同。本文将比较 FastAPI 和…

《二十三》Qt 简单小项目---视频播放器

QT 使用QMediaPlayer实现的简易视频播放器 效果如下&#xff1a; 功能点 播放指定视频点击屏幕暂停/播放开始/暂停/重置视频拖拽到指定位置播放 类介绍 需要在配置文件中加入Multimedia, MultimediaWidgets这俩个库。 Multimedia&#xff1a;提供了一套用于处理音频、视频…

Streamlit:快速构建可视化网页(数据科学必备)

很多算法工程师在完成数据分析、模型训练或者项目总结的时候,往往只能通过ppt汇报,添加数据图表、截图模型实验结果等。如果想提供一个前端演示demo,通常可以搭建flask服务,但是flask需要学习很多前端知识,如css、html等,这又是一个深之又深的坑。那有没有什么工具能够跳…

「Dasha and Photos」Solution

简述题意 给定一个 n m n \times m nm 的方格&#xff0c;每个格子里有一个小写英文字母。 现在你有 k k k 个 n m n \times m nm 的方格&#xff0c;这些方格都是给定方格的基础上将左上角为 ( a i , b i ) (a_i,b_i) (ai​,bi​)&#xff0c;右下角为 ( c i , d i ) …

SpringBoot项目GraalVM迁移

一些背景 一直想把项目迁移到使用GraalVM构建出的原生应用上,但是在前段时间的一次尝试后,发现很难做到,其中一个最主要原因就在于我目前手头上没有X86架构的电脑。平时我使用的是一个M1处理器的MacBook,编译出的Docker镜像架构指令集也是Arm64的,无法在我的X86服务器启动…

Android Studio报错:Constant expression required

【出现的问题】&#xff1a; 使用JDK17以上版本&#xff0c;switch语句报错&#xff1a;Constant expression required 【解决方法】&#xff1a; 在gradle.properties配置文件下添加代码&#xff1a; android.nonFinalResIdsfalse 如图&#xff1a; 接着再点击右上角的Sync…

国内验签SSL证书——数据不出境,政务、高校、金融机构必备

涉及金融、政务、教育等重要领域的网站&#xff0c;国家要求是重要数据坚决不能出境。特别是《中华人民共和国网络安全法》的实施&#xff0c;国内验签SSL证书成为了提升网站安全性、保护用户数据和维护网站信誉的重要工具。 国内验签SSL证书的优势 1数据不出境 根据国家相关法…

基于springboot+mybatis+vue的项目实战之(后端+前后端联调)

步骤&#xff1a; 1、项目准备&#xff1a;创建数据库&#xff08;之前已经创建则忽略&#xff09;&#xff0c;以及数据库连接 2、建立项目结构文件夹 3、编写pojo文件 4、编写mapper文件&#xff0c;并测试sql语句是否正确 5、编写service文件 6、编写controller文件 …

PLC学习笔记

PLC学习笔记 前言一、一些基操知识二、GX works2编程2.1 位逻辑1.2 中间寄存器1.3 PLC的扫描方式 总结 前言 我这个人真的是太渴望知识了~ 一、一些基操知识 一般X表示输入&#xff0c;Y表示输出。一般八个为一组X0~X7M表示中间寄存器&#xff0c;M0~M7时间T、计数C 二、GX …

Java基于Spring Boot框架的课程管理系统(附源码,说明文档)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

董浩影评

本文来自博客园,作者:↑-↑-我-的-仓-鼠-↑-↑,转载请注明原文链接:https://www.cnblogs.com/donghao99/p/18182035