vue div生成base64图片

vue yekong

安装依赖

npm i html2canvas --save

引入

import html2canvas from "html2canvas"

使用

<div class="body-content" ref='creatImg'>
    这是要生成图片的区域
</div>

<button @click='saveImg'>保存</button>

saveImg(){
    //为避免出现位置偏移的情况,将滚动条置顶
    document.body.scrollTop = document.documentElement.scrollTop = 0
    html2canvas(this.$refs.creatImg,{scrollY:0}).then(canvas => {
      let dataURL = canvas.toDataURL("image/png");
          this.uImgUrl = dataURL;  //生成的图片连接地址
          this.file =  dataURLtoFile(dataURL, `test-${new Date().getTime()}.png`)  //将图片转为fie 文件流 
    })
}

图片base64格式转换成文件流格式


export function dataURLtoFile(base64File, filename){
    var arr = base64File.split(","),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, { type: mime });
}

收集记录,方便查阅。
来源

喜欢