在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'
})