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

vue 提升html2canvas渲染速度

提升dom转化成图片 主要是html2canvas里的ignoreElements属性

<div class="qrDiv" id="qrDiv" ref="contentToConvert" v-loading="qrLoading">
        <div>我是标题</div>
        <div class="tips">
          <span class="pr20">{{ 1111111 }}</span>
         </div>
        <canvas ref="qrCodeCanvas"></canvas>
      </div>
      <div class="flex-around button">
        <el-button class="fill"  round @click="customDownClick" :loading="savePicLoading" v-clickAgain
          >保存图片</el-button
        >
</div>

点击事件

async customDownClick(){
      this.savePicLoading=true;
      // 获取要转换的 div 元素
      const element = this.$refs.contentToConvert;
      let tags = ['HEAD','LINK','STYLE'] // 必须保留的节点,保持样式效果等
      try {
        // 使用 html2canvas 将 div 转换为 canvas
        const canvas = await html2canvas(element,{
          element:element,
          scale:1,
          useCORS:true,
          logging: false,
          ignoreElements:e=>{
            // 忽略带有 'ignore-me' 类名的元素.
           if(e.contains(element) || element.contains(e) || e.getAttribute('data-html2canvas') != null || tags.indexOf(e.tagName)!=-1){
                 return false
             }
             return true
          }
        })
          
        // 将 canvas 转换为图片 URL
        const image = canvas.toDataURL('image/png');
        // 创建一个临时链接元素
        const link = document.createElement('a');
        link.href = image;
        link.download = `${this.stationInfo.oilStationNameAbbr}${moment().format("YYYYMMDDHHmmss")}.png`; // 设置下载文件名
        // 触发下载
        link.click();
        this.savePicLoading=false;
        this.dialogVisible=false;
      } catch (error) {
        console.error('Error converting div to image:', error);
        this.savePicLoading=false;
      }
    }

速度将会得到很大优化…


http://www.kler.cn/a/571301.html

相关文章:

  • 第十天-字符串:编程世界的文本基石
  • 深入 Vue.js 组件开发:从基础到实践
  • 深入探索像ChatGPT这样的大语言模型
  • 记一次渗透测试实战:SQL注入漏洞的挖掘与利用
  • Trae:国内首款AI原生IDE,编程效率大提升
  • AI大模型-提示工程学习笔记21-图提示 (Graph Prompting)
  • 从0到1,动漫短剧源码搭建,动漫短剧小程序
  • 【暴力枚举】P1618 三连击(升级版)
  • Mac远程桌面软件哪个好用?
  • conda环境管理 kernel注册到jupyter notebook
  • C++20中的std::format
  • Python-测试代码
  • 利用Adobe Acrobat 实现PPT中图片分辨率的提升
  • 4G工业路由器在公交充电桩中的应用与优势
  • Android U 分屏——SystemUI侧处理
  • 蓝桥杯---归并排序2(leetcode170)题解
  • 石基大商:OceanBase + Flink CDC,搭建连锁零售系统数据湖
  • CentOS7 安装Redis 6.2.6 详细教程
  • 队列的顺序结构—循环队列的判断条件(rear + 1) % MAXSIZE分析
  • flowable的使用