美文网首页
截图功能

截图功能

作者: 衬fzy | 来源:发表于2023-07-16 17:18 被阅读0次

    安装 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()
        },
    

    相关文章

      网友评论

          本文标题:截图功能

          本文链接:https://www.haomeiwen.com/subject/rvrwudtx.html