html2canvas生成图片

 // 图片转换格式的方法 直接使用就好  不需要知道为什么
    dataURLToBlob (dataurl) {
      let arr = dataurl.split(',')
      let mime = arr[0].match(/:(.*?);/)[1]
      let bstr = atob(arr[1])
      let n = bstr.length
      let u8arr = new Uint8Array(n)
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n)
      }
      return new Blob([u8arr], { type: mime })
    }

    /* 保存图片的方法(即按钮点击触发的方法)
      第一个参数为需要保存的div的id名
      第二个参数为保存图片的名称 */
    saveImage (dom, imgText = '测试') {
      let that = this
      let a = document.createElement('a')
      html2canvas(dom).then(canvas => {
        let dom = document.body.appendChild(canvas)
        dom.style.display = 'none'
        a.style.display = 'none'
        document.body.removeChild(dom)
        let blob = that.dataURLToBlob(dom.toDataURL('image/png'))
        // console.log(dom.toDataURL('image/png'))
        // console.log(URL.createObjectURL(blob))
        a.setAttribute('href', URL.createObjectURL(blob))
        // 这块是保存图片操作  可以设置保存的图片的信息
        a.setAttribute('download', imgText + '.png')
        document.body.appendChild(a)
        a.click()
        URL.revokeObjectURL(blob)
        document.body.removeChild(a)
      })
    }

 // 不需要下载图片,直接把图片生成base64,然后给后端的做法

 /* 保存图片的方法(即按钮点击触发的方法)
      第一个参数为需要保存的div的id名
      第二个参数为保存图片的名称 */
    saveImage (dom, imgText = '测试') {
      html2canvas(dom).then(canvas => {
        // 获取Base64码
        console.log(canvas.toDataURL())
      })
    }

 

posted @ 2020-03-31 10:45  simple-love  阅读(1270)  评论(0编辑  收藏  举报