当前位置: 首页 > news >正文

vue2 搭配 html2canvas 截图并设置截图时样式(不影响页面) 以及 base64转file文件上传 或者下载截图 小记

下载

npm install html2canvas --save

引入

import html2canvas from "html2canvas";

 

//使用

html2canvasForChars() {  // 使用that来存储当前Vue组件的上下文,以便在回调函数中使用  let that = this;  // 获取DOM中id为"charts"的元素,需要截图的元素  let node = document.getElementById("charts");  // 返回一个Promise对象,用于异步处理html2canvas的调用  return new Promise((resolve, reject) => {  // 使用Vue的$nextTick方法确保DOM更新完成后再执行html2canvas  that.$nextTick(() => {  // 调用html2canvas函数,传入node元素和相关配置  html2canvas(node, {  useCORS: true, // 允许跨域图片  // 以下两行被注释,因为它们被固定尺寸替代  // height: node.offsetHeight, // 自动获取高度(现在使用固定高度)  // width: node.offsetWidth, // 自动获取宽度(现在使用固定宽度)//scale: 2.82, // 缩放比例 这个数值根据具体需求调整width: 270, // 设置canvas的宽度为270    画布的宽度height: 200, // 设置canvas的高度为200   画布的高度scrollY: 0, // 忽略Y轴滚动  scrollX: 0, // 忽略X轴滚动  onclone: function (documentClone) {  // 在html2canvas克隆的DOM上修改样式  // 对克隆的#charts元素应用缩放和背景色 //在此设置样式 不影响页面 documentClone.getElementById("charts").style.transform = "scale(0.5)";  documentClone.getElementById("charts").style.backgroundColor = "#2c2c32";},  })  // html2canvas执行成功后的回调   在此可实现 下载 或其他操作.then((canvas) => {  //下载//link.setAttribute('download', '分享海报') // 设置下载名称//link.href = canvas?.toDataURL('image/png', 1) // 转换为png格式//link.click()//展示// 将canvas转换为png格式的图片URL  let imgUrl = canvas.toDataURL("image/png");  that.Thumbnail = imgUrl;  //现在已经可以展示到页面上了})  // html2canvas执行失败的回调  .catch((err) => {  // 捕获错误并拒绝Promise  reject(err); // 处理生成 canvas 失败的情况  });  });  });  
},

上面显示了展示和下载的方法 展示的话一般是搭配上传(将当前截图上传到服务器) 但是后端规定的上传格式如何不是base64的话 我们需要转化成file对象 创建formdata 对象上传

1. base64z转 file文件

  // 生成随机数 这一步是避免傻逼后端直接用我们规定的文件名缓存 到时候会有重名的文件generateRandomString(length) {// 定义允许的字符集const characters = "abcdefghijkmnopqrstuvwxyz23456789"; // 去除容易混淆的字符let result = "";const charactersLength = characters.length;for (let i = 0; i < length; i++) {result += characters.charAt(Math.floor(Math.random() * charactersLength));}return result;}, // base64转化为file文件base64ToFile(dataurl) {// 随机数作为图片名称let radom = this.generateRandomString(16);let filename = radom + ".png";// 获取到base64编码const arr = dataurl.split(",");// 将base64编码转为字符串const bstr = window.atob(arr[1]);let n = bstr.length;const u8arr = new Uint8Array(n); // 创建初始化为0的,包含length个元素的无符号整型数组while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, {type: "image/png",});},//使用// 上传缩略图图片uploadScreenshot(path) {let that = this;return new Promise((resolve, reject) => {if (path != null) {
//转换let file = that.base64ToFile(path);let data = new FormData();data.append("imageFile", file);that.axios.post(window.global.uploadAddress + "/file/upload/image?type=" + "grid", data, {headers: {"Content-Type": "application/json",},})........

好了 下课

相关文章:

vue2 搭配 html2canvas 截图并设置截图时样式(不影响页面) 以及 base64转file文件上传 或者下载截图 小记

下载 npm install html2canvas --save引入 import html2canvas from "html2canvas"; //使用 html2canvasForChars() { // 使用that来存储当前Vue组件的上下文&#xff0c;以便在回调函数中使用 let that this; // 获取DOM中id为"charts"的元素&…...

请大家监督:我要开启Python之路,首要任务最简单的搭建环境

任务说明&#xff1a; 如上图所示&#xff0c;Python稳稳第一&#xff0c;为何&#xff1f;因为Python可以做很多事情&#xff0c;比如&#xff1a;Web开发&#xff0c;网络爬虫&#xff0c;软件开发、数据分析、游戏开发&#xff0c;金融分析&#xff0c;人工智能与机器学习&a…...

http协议深度解析——网络时代的安全与效率(1)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面&#xff1a; 本章目的&#xff1a; …...

类和对象【下】

一、类的默认成员函数 默认成员函数从名字就告诉我们何为默认成员函数&#xff0c;即&#xff1a;用户没有实现&#xff0c;编译器默认自动实现的函数。 这时你不禁一喜&#xff0c;还有这好事&#xff0c;编译器给我打工&#xff0c;那么&#xff0c;我们今天都来了解一下都有…...

面向未来的S2B2C电商供应链系统发展趋势与创新探索

S2B2C电商供应链系统的发展趋势及创新方向。首先分析当前市场环境和消费者需求的变化&#xff0c;如个性化消费、即时配送、绿色环保等趋势对供应链系统的影响。随后&#xff0c;预测并讨论未来供应链系统可能的技术革新&#xff0c;如物联网&#xff08;IoT&#xff09;在物流…...

【C++】哈希容器

unordered系列关联式容器 在之前的博文中介绍过关联式容器中的map与set&#xff0c;同map与set一样&#xff0c;unordered_set与unordered_set也是关联式容器。 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;查询效率可以达到logN&#xff1b;在…...

milvus - VectorDBBench benchmaker 性能测试工具使用经验

IVF_FLAT (Inverted File with Flat Indexing) 优点: 在数据量适中且维度不是非常高的情况下&#xff0c;IVF_FLAT能提供精确的最近邻搜索结果。 相对简单&#xff0c;易于理解和实现。 缺点: 当数据集非常大时&#xff0c;IVF_FLAT需要大量的内存来存储整个数据集&#xff0c;…...

Linux上如何分析进程内存分配,优化进程内存占用大小

云计算场景下,服务器上内存宝贵,只有尽可能让服务器上服务进程占用更少的内存,方才可以提供更多的内存给虚拟机,卖给云客户。 虚拟化三大件:libvirt、qemu、kvm内存开销不小,可以优化占用更少的内存。如何找到进程内存开销的地方直观重要,以qemu为例说明。 一、查看进…...

C语言笔记(第n版):知识清单

注&#xff1a;本文参考自【C reference - cppreference.com】和【C 语言参考 | Microsoft Learn】&#xff0c;颇有点借花献佛的意味…… C 程序是一系列包含声明的文本文件&#xff08;通常为头文件和源文件&#xff09;的序列。它们经过转换成为可执行程序&#xff0c;当操作…...

【香橙派系列教程】(四)基于ARM-Linux架构的语音控制刷抖音项目

【四】基于ARM-Linux架构的语音控制刷抖音项目 文章目录 【四】基于ARM-Linux架构的语音控制刷抖音项目1.语音模块配置1.创建产品2.引脚配置3.词条定义4.添加控制5.发布版本6.烧录固件 2.编程实现语音和开发板通信3.手机接入Linux热拔插1.dmesg命令2.adb调试踩坑问题 3.总结 4.…...

Java----反射

什么是反射&#xff1f; 反射就是允许对成员变量、成员方法和构造方法的信息进行编程访问。换句话来讲&#xff0c;就是通过反射&#xff0c;我们可以在不需要创建其对象的情况下就可以获取其定义的各种属性值以及方法。常见的应用就是IDEA中的提示功能&#xff0c;当我…...

相似度计算方法

一、相似度计算方法 相似度算法是计算两个或多个对象之间相似程度的方法&#xff0c;这些对象可以是文本、图像、音频等不同类型的数据。在计算机科学、信息检索、推荐系统、数据挖掘等领域中&#xff0c;相似度算法具有广泛的应用。 二、应用场景 搜索引擎&#xff1a;用于文…...

Vue 点击markdown页内链接,路由设置不跳转

在路由index.js里添加路由守卫&#xff1a; router.beforeEach((to,from,next)>{//如果是md页内链接“#xxx”&#xff0c;则不跳转const hash window.location.hash;if(hash.startsWith(#)) {next(false);}else{...其他控制代码next();} });当markdown用[标题链接](#标题名…...

IOday4

一、思维导图 二、练习 1、使用父子进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半内容&#xff0c;子进程拷贝后一半内容&#xff0c;子进程结束后退出&#xff0c;父进程回收子进程的资源 #include<myhead.h> int main(int argc, const char *argv[]) {//判断终…...

智能座舱背后主流车机平台(SA8155/SA8295)的高通Hexagon DSP是什么?

智能座舱背后主流车机平台(SA8155/SA8295)的高通Hexagon DSP是什么&#xff1f; 一、高通Hexagon DSP的辉煌发展历程 高通&#xff0c;作为全球领先的无线通信技术创新者&#xff0c;其处理器技术一直走在行业前列。随着智能手机和物联网设备的普及&#xff0c;对处理器性能的…...

linux进程控制——进程等待——wait、waitpid

前言&#xff1a;本节内容仍然是进程的控制&#xff0c;上一节博主讲解的是进程控制里面的进程创建、进程退出、终止。本节内容将讲到进程的等待——等待是为了能够将子进程的资源回收&#xff0c;是父进程等待子进程。 我们前面的章节也提到过等待&#xff0c; 那里的等待是进…...

Shell脚本的进程管理

进程管理是系统管理的重要方面&#xff0c;通过对进程的监控、启动、停止和重启&#xff0c;可以保证系统的稳定运行。Shell脚本是一种强大的工具&#xff0c;可以对进程进行自动化管理&#xff0c;提高效率和准确性。 参考&#xff1a;shell脚本进程管理 - CSDN文库 shell脚本…...

JLink烧录失败

1. 现象&#xff1a; 这个位置是灰色的&#xff0c;没有SW Device信息。 MDK下面的打印&#xff1a; J-Flash的打印&#xff1a; windows上面的弹框的现象没有截屏。 2. 解决办法&#xff1a; 1.打开J-Link Commander,输入unlock kinetis&#xff0c;看现象不起作用,网…...

Monorepo简介

Monorepo 第一章&#xff1a;与Monorepo的邂逅第二章&#xff1a;Multirepo的困境第三章&#xff1a;Monorepo的魔力 - 不可思议的解决问题能力第四章&#xff1a;Monorepo的挑战与应对策略第五章&#xff1a;总结第六章&#xff1a;参考 第一章&#xff1a;与Monorepo的邂逅 …...

SpringBoot打包为jar包,打包前注意事项及打包教程

在打包 Spring Boot 项目为 JAR 包之前&#xff0c;有一些重要的注意事项和步骤&#xff0c;以确保打包过程顺利并生成一个可正常运行的 JAR 包&#xff1a; 1. 检查依赖和版本 确保所有依赖项和插件版本是最新且兼容的&#xff0c;特别是 Spring Boot 版本和其相关依赖的版本…...

目标检测新手必看:如何用Python手写IOU计算函数(附完整代码)

目标检测实战&#xff1a;从零编写Python版IOU计算函数 刚接触目标检测时&#xff0c;最让人困惑的莫过于那些神秘的评估指标。其中IOU&#xff08;交并比&#xff09;就像一把尺子&#xff0c;能量化算法预测框与真实框的贴合程度。但纸上得来终觉浅&#xff0c;今天我们就用P…...

车辆信号震动信号的滤波、幅值与能量分析——基于测试台采集文件ssjlbpp.m等的研究

车辆信号的震动信号的滤波、幅值以及能量分析&#xff0c;信号是利用测试台采集回来的 文件列表&#xff1a; ssjlbpp.m cxssjlbpp.m ssj.m fuzhissj.m翻了翻硬盘里压箱底的车辆测试台数据&#xff0c;哦对&#xff0c;还有那堆当时随手起的.mat之外的.m文件&#xff1a;ssjlbp…...

Spring AI:Spring生态的AI工程框架全面解析

Spring AI&#xff1a;Spring生态的AI工程框架全面解析 【免费下载链接】spring-ai An Application Framework for AI Engineering 项目地址: https://gitcode.com/GitHub_Trending/spr/spring-ai Spring AI是Spring生态系统中的AI工程框架&#xff0c;为Java开发者提供…...

【CPython内存管理白皮书级解析】:从PyObject到ob_refcnt,看懂泄漏发生的底层5层机制

第一章&#xff1a;CPython内存管理的底层基石与泄漏本质CPython 的内存管理并非依赖操作系统级 malloc/free 的直接映射&#xff0c;而是构建在三层抽象之上的精密系统&#xff1a;最底层为系统内存分配器&#xff08;如 mmap 或 malloc&#xff09;&#xff0c;中间层为 CPyt…...

Vlc.DotNet:在.NET应用中构建专业级媒体播放能力

Vlc.DotNet&#xff1a;在.NET应用中构建专业级媒体播放能力 【免费下载链接】Vlc.DotNet .NET control that hosts the audio/video capabilities of the VLC libraries 项目地址: https://gitcode.com/gh_mirrors/vl/Vlc.DotNet 价值定位&#xff1a;解决.NET媒体播放…...

自然界生物群体智能启发的**元启发式优化算法**,广泛应用于组合优化、函数优化、路径规划、调度问题等领域

蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;、粒子群算法&#xff08;Particle Swarm Optimization, PSO&#xff09;和鱼群算法&#xff08;Artificial Fish Swarm Algorithm, AFSA&#xff09;均属于受自然界生物群体智能启发的元启发式优化算法&#xff…...

TTL串口设计及其注意事项

一、TTL串口设计概述我们常见的处理器&#xff08;单片机&#xff09;引出来的串口是UART、USART,其中有没有S取决于有没有时钟信号&#xff08;SLK&#xff09;&#xff0c;出来的电平是TTL电平&#xff0c;常见的UART串口设计有3线串口设计&#xff0c;单线串口设计&#xff…...

FLUX.1-dev LoRA微调指南:基于像素幻梦输出数据集训练专属风格

FLUX.1-dev LoRA微调指南&#xff1a;基于像素幻梦输出数据集训练专属风格 1. 前言&#xff1a;为什么需要LoRA微调 在像素艺术创作领域&#xff0c;每个艺术家都渴望拥有独特的视觉风格。FLUX.1-dev作为当前最先进的扩散模型&#xff0c;配合像素幻梦(Pixel Dream Workshop)…...

Connect to Oracle Database with JDBC Driver

1. Overview The Oracle Database is one of the most popular relational databases. In this tutorial, we’ll learn how to connect to an Oracle Database using a JDBC Driver. 2. The Database To get us started, we need a database. If we don’t have access to …...

实战指南:如何用Hydra在Kali Linux上快速破解Telnet弱密码(附字典优化技巧)

Kali Linux渗透测试实战&#xff1a;Hydra高效破解Telnet服务的进阶技巧 在渗透测试和网络安全评估中&#xff0c;弱密码检测是基础但至关重要的环节。Telnet作为传统的远程管理协议&#xff0c;由于采用明文传输&#xff0c;成为安全测试的重点对象。本文将深入探讨如何利用Ka…...