vue 截图转base64转文件File 异步获取

复制代码
import html2canvas from "html2canvas";
export   function  base64ImgtoFile(dataurl, filename = 'file') {
    let arr = dataurl.split(',')
    let mime = arr[0].match(/:(.*?);/)[1]
    let suffix = mime.split('/')[1]
    let bstr = atob(arr[1])
    let n = bstr.length
    let u8arr = new Uint8Array(n)
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n)
    }
    return new File([u8arr], `${filename}.${suffix}`, {
      type: mime
    })
  }


  export   function toImages(imageTofile) {
    return new Promise((resolve, reject) => {
      html2canvas(imageTofile, {
        backgroundColor: null,
        useCORS: true 
      }).then((canvas) => {
        const url = canvas.toDataURL('image/png');
          resolve(base64ImgtoFile(url))
      }).catch((err) => {
        reject(err)
      })
    })
  }

// 调用

toImage() {

let that=this;

toImages(this.$refs.imageTofile).then((imgFileRaw) => {

that.imgFileRaw = base64ImgtoFile(this.htmlUrl);

}).catch((error) => {

that.imgFileRaw = null;

});

},

相关推荐
Zhi.C.Yue13 小时前
React 的桶算法详解
前端·算法·react.js
果壳~13 小时前
【前端】【canvas】【pixi.js】水波纹滤镜实现教程 - 支持随机波动与鼠标交互
前端·javascript
han_13 小时前
手把手教你写一个VSCode插件,从开发到发布全流程
前端·javascript·visual studio code
爱吃大芒果13 小时前
Flutter 状态管理全家桶:Provider、Bloc、GetX 实战对比
开发语言·前端·javascript·flutter·华为·ecmascript
未知原色13 小时前
react实现虚拟键盘支持Ant design Input和普通input Dom元素-升级篇
前端·javascript·react.js·node.js·计算机外设
顾安r13 小时前
12.16 脚本网页 Golang标准库
golang·html
qq_3814549913 小时前
设计模式详解:代码架构的艺术
开发语言·javascript·ecmascript
半桶水专家13 小时前
vue3中v-model 用法详解
前端·javascript·vue.js
行走的陀螺仪13 小时前
Vue3 项目单元测试全指南:价值、Vitest 落地与提效方案
开发语言·前端·单元测试·html5·vitest
AI浩21 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端