vue3如何将html元素变成canvas(海报生成),进行图片保存/截图

 更新时间:2022年05月24日 08:59:44   作者:只会cv的小前端  
这篇文章主要介绍了vue3实现将html元素变成canvas(海报生成),进行图片保存/截图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

将html元素变成canvas(海报生成),进行图片保存/截图

// 网页上只有一张图片 我们可以直接就进行图片保存
// 但是你想 保存这张图片的时候 顺便把下面的字也带上  相当于截图  那请你像我这样做
 <div id="capture" style="padding: 10px; background: #fff">
      <img :src="whoImg" style="width: 300px" alt="" />
      <h4 style="color: #000">Hello world!</h4>
 </div>
 // 触发按钮
 <button @click="isShow()">生成海报</button>
 //这里是创建一个容器 存放你待会想保存的图片  也就是你想要的截图
<div ref="wrapper" id="wrapper" v-show="show" @click="remove()"></div>

// 引入插件 没有就直接下 npm install html2canvas filesaver --save
import html2canvas from 'html2canvas';

setup() {
// 随便搞张图
let whoImg=require('../assets/1.png').default;
// 绑定你的容器
let wrapper = ref();
// 控制容器显示
let show = ref(false);
// 锁 防止 多次生成
let lock = ref(1);
// 触发
const isShow = () => {
   show.value = true;
   //  html2canvas的方法  传你要截图的盒子  会把盒子内的所有元素都变成一张canvas图片
   html2canvas(document.querySelector('#capture')).then((canvas) => {
   if (lock.value) {
   // 给容器加入这个canvas
      wrapper.value.appendChild(canvas);
      lock.value = 0;
    }
  });
};
// 移除这个容器内容
const remove = () => {
      show.value = false;
      if (!lock.value) {
        lock.value = 1;
        wrapper.value.innerHTML = '';
      }
 };


}

// 图片大小
img {
    width: 300px;
 }
 // 放canvas这个容器的大小
#wrapper {
  width: 500px;
  height: 500px;
  position: fixed;
  top: 0;
  left: 0;
  // 这下面是vant自定义的组件样式用的 不打紧
  z-index: var(--van-overlay-z-index);
  background-color: var(--van-overlay-background-color);
}

使用html2canvas将页面转化为图片

微信端将页面截屏之后保存到本地,使用了html2canvas插加粗样式

install

npm install --save html2canvas

在所需页面引入

import html2canvas from "html2canvas"

use

<div ref="imageWrapper">
      <div class="success">
        <div class="img">
          <img class="img-icon" src="../assets/success.png"/>
          <p style="font-weight: 600; font-size: 18px">支付成功</p>
        </div>
      </div>
      <div class="success-detail">
        <el-row style="margin-top: 10px;">
          <el-col :span="5" class="col-left-suc">收款商家</el-col>
          <el-col :span="16" class="col-right">{{merchant}}</el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="5" class="col-left-suc">费用名称</el-col>
          <el-col :span="16" class="col-right">{{contName}}</el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="5" class="col-left-suc">缴费金额</el-col>
          <el-col :span="16" class="col-right">{{chargePrice}}元</el-col>
        </el-row>
      </div>
    </div>
    <div class="button">
      <el-button style="width: 70%;" type="success" size="small" @click="toImage">生成截图</el-button>
    </div>

vue中用ref来指定你需要截屏的dom

toImage() {
        html2canvas(this.$refs.imageWrapper).then(canvas => {
          let dataURL = canvas.toDataURL("image/png");
          this.imgUrl = dataURL;
          if (this.imgUrl !== "") {
            this.dialogTableVisible = true;
          }
        });
      }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决webpack+Vue引入iView找不到字体文件的问题

    解决webpack+Vue引入iView找不到字体文件的问题

    今天小编就为大家分享一篇解决webpack+Vue引入iView找不到字体文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue项目两种方式实现竖向表格的思路分析

    vue项目两种方式实现竖向表格的思路分析

    这篇文章主要介绍了vue项目两种方式实现竖向表格的思路分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Vue.js每天必学之组件与组件间的通信

    Vue.js每天必学之组件与组件间的通信

    Vue.js每天必学之组件与组件间的通信,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • vue中回调函数(callback)的用法举例

    vue中回调函数(callback)的用法举例

    这篇文章主要给大家介绍了关于vue中回调函数(callback)的用法举例,所谓的回调函数,就是由调用函数提供执行代码,被调用函数执行完毕之后,再自动执行的一个函数,需要的朋友可以参考下
    2023-08-08
  • vue3之axios跨域请求问题及解决

    vue3之axios跨域请求问题及解决

    这篇文章主要介绍了vue3之axios跨域请求问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Vue el-table实现右键菜单功能

    Vue el-table实现右键菜单功能

    这篇文章主要为大家详细介绍了Vue el-table实现右键菜单功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 详解Vue2 无限级分类(添加,删除,修改)

    详解Vue2 无限级分类(添加,删除,修改)

    本篇文章主要介绍了详解Vue2 无限级分类(添加,删除,修改) ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 前端vue-cropperjs实现图片裁剪方案

    前端vue-cropperjs实现图片裁剪方案

    这篇文章主要为大家介绍了前端vue-cropperjs实现图片裁剪方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue 防止页面加载时看到花括号的解决操作

    vue 防止页面加载时看到花括号的解决操作

    这篇文章主要介绍了vue 防止页面加载时看到花括号的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue单页应用加百度统计代码(亲测有效)

    vue单页应用加百度统计代码(亲测有效)

    这篇文章主要介绍了vue单页应用加百度统计代码的解决方法,需要的朋友参考下吧
    2018-01-01

最新评论