From a36dd38fad076aec46db59287175ba445df43c25 Mon Sep 17 00:00:00 2001 From: xuxingjun Date: Wed, 25 Dec 2024 10:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E8=B4=BA=E6=8A=A5=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E7=9A=84=E6=96=B9=E6=B3=952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ebiz/generateImg/generateImg.vue | 52 ++++++++-------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/src/views/ebiz/generateImg/generateImg.vue b/src/views/ebiz/generateImg/generateImg.vue index d78130674..f6c76ad42 100644 --- a/src/views/ebiz/generateImg/generateImg.vue +++ b/src/views/ebiz/generateImg/generateImg.vue @@ -222,43 +222,21 @@ export default { captureAndProcessImage(); }, downloadFn() { - const clientWidth = this.$refs.generateImg.offsetWidth;//获取容易的宽高 + const clientWidth = this.$refs.generateImg.offsetWidth; const clientHeight = this.$refs.generateImg.offsetHeight; - let canvas = document.createElement("canvas");//创建Canvas对象 - var scale = 2;//用于渲染的比例。默认为浏览器设备像素比率 - canvas.width = clientWidth * scale; - canvas.height = clientHeight * scale; - const ops = { - - width: clientWidth,//画布的宽度 - height: clientHeight,//画布的高度 - // 跨域配置 - useCORS: true, // 使用跨域 - allowTaint: true, // 允许使用跨域资源 - tainTest: false, - scale: scale, - backgroundColor: null, - }; - html2canvas(this.$refs.generateImg, ops).then((canvas) => { - // 转成图片,生成图片地址 - this.imgUrl = canvas.toDataURL("image/png"); - this.download(this.imgUrl, [canvas.width, canvas.height]); - }); - }, - download(imgUrl, kh) { - this.getUrlBase64(imgUrl, kh).then((base64) => { - const link = document.createElement("a"); - link.href = base64; - link.download = `图片.png`; - link.click(); + const kh = [clientWidth, clientHeight]; + + html2canvas(this.$refs.generateImg, { useCORS: true, logging: true }).then((canvas) => { + const dataURL = canvas.toDataURL('image/png'); + this.download(dataURL, kh); }); }, getUrlBase64(url, kh) { return new Promise((resolve) => { - let canvas = document.createElement("canvas"); - const ctx = canvas.getContext("2d"); + let canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); const img = new Image(); - img.crossOrigin = "Anonymous"; // 允许跨域 + img.crossOrigin = 'Anonymous'; // 允许跨域 img.src = url; img.onload = () => { // eslint-disable-next-line prefer-destructuring @@ -266,13 +244,21 @@ export default { // eslint-disable-next-line prefer-destructuring canvas.width = kh[0]; ctx.drawImage(img, 0, 0, kh[0], kh[1]); - const dataURL = canvas.toDataURL("image/png"); + const dataURL = canvas.toDataURL('image/png'); canvas = null; resolve(dataURL); - this.$toast('下载成功') }; }); }, + download(imgUrl, kh) { + this.getUrlBase64(imgUrl, kh).then((base64) => { + const link = document.createElement('a'); + link.href = base64; + link.download = `业绩贺报.png`; + link.click(); + this.$toast('下载成功') + }); + }, close() { this.$emit('child-colse', '1') this.$refs.generateImg.src = '';