截图功能

2023-07-16  本文已影响0人  衬fzy

安装 yanr add html2canvas

html content是滚动父级部分,imageTofile内部是包裹的内容

<div class="content">
        <div id="imageTofile" ref="imageTofile">
          内容...
         </div>
</div>

js

import html2canvas from "html2canvas";

    toImage() {
      const loading = this.$loading({
        lock: true,
        text: 'Loading'
      });
      // 手动创建一个 canvas 标签
      const canvas = document.createElement("canvas")
      // 获取父标签,意思是这个标签内的 DOM 元素生成图片
      // imageTofile是给截图范围内的父级元素自定义的ref名称
      let canvasBox = this.$refs.imageTofile
      // 获取父级的宽高
      const width = parseInt(window.getComputedStyle(canvasBox).width)
      const height = parseInt(window.getComputedStyle(canvasBox).height)
      // 宽高 * 2 并放大 2 倍 是为了防止图片模糊
      canvas.width = width * 2
      canvas.height = height * 2
      canvas.style.width = width + 'px'
      canvas.style.height = height + 'px'
      const context = canvas.getContext("2d");
      context.scale(2, 2);
      const options = {
        backgroundColor: null,
        canvas: canvas,
        useCORS: true
      }
      html2canvas(canvasBox, options).then((canvas) => {
        // toDataURL 图片格式转成 base64
        let dataURL = canvas.toDataURL("image/jpeg", 0.5)// image/jpeg时才可以压缩0.5是图片质量压缩
        // console.log(dataURL)
        this.downloadImage(dataURL)
        loading.close();
      })
    },
    // 下载图片
    downloadImage(url) {
      // 如果是在网页中可以直接创建一个 a 标签直接下载
      let a = document.createElement('a')
      a.href = url
      a.download = `${this.form.ribao_name}截图`
      a.click()
    },
上一篇 下一篇

猜你喜欢

热点阅读