html2canvas中canvas.toDataURL无效

1,034 阅读1分钟

在H5项目中,遇到了IOS端生成不了图片的问题,打印发现canvas.toDataURL的返回值是data:,百度了半天发现是canvas高度问题,因为对canvas不熟,我的解决方法是在点击生成图片时将元素的transform属性设置为scale(0.5,0.5),同时transformOrigin设置'0 0',再生成就可以了

  overlayShow.value = true   //设置全黑的遮罩层,不然用户就看到元素缩小了
  document.getElementById("reportForm").style.transform = 'scale(0.5,0.5)'  //缩小
  document.getElementById("reportForm").style.transformOrigin = '0 0'
  html2canvas(document.getElementById("reportForm"), {
    useCORS: true, //(图片跨域相关)
    allowTaint: false, //允许跨域(图片跨域相关)
    dpi: 300, //设置生成图片清晰度
  }).then(function (canvas) {
    // console.log(canvas.toDataURL())
    ImagePreview([canvas.toDataURL("image/png")]);   //vant的图片预览
  }).finally(()=>{
    overlayShow.value = false
    document.getElementById("reportForm").style.transform = 'scale(1,1)'   //还原
    document.getElementById("reportForm").style.transformOrigin = '0 0'
  })