From 49c44e171a706d7f21a20bbbb4c0100e5be03b43 Mon Sep 17 00:00:00 2001 From: handongxun Date: Thu, 25 Apr 2019 15:05:24 +0800 Subject: [PATCH] =?UTF-8?q?update:=20H5=20canvasToTempFilePath=20fileType?= =?UTF-8?q?=E6=94=AF=E6=8C=81jpg,=20=E5=AF=B9jpeg=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=81=9A=E4=BA=86=E7=99=BD=E5=BA=95=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/service/api/context/canvas.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/core/service/api/context/canvas.js b/src/core/service/api/context/canvas.js index 3aeb1da19..cd60bfe4e 100644 --- a/src/core/service/api/context/canvas.js +++ b/src/core/service/api/context/canvas.js @@ -843,17 +843,33 @@ export function canvasToTempFilePath ({ canvas.height = data.height var c2d = canvas.getContext('2d') c2d.putImageData(imgData, 0, 0, 0, 0, destWidth || imgData.width, destHeight || imgData.height) - var base64 = canvas.toDataURL(`image/${fileType.toLowerCase()}`, qualit) + var imageType = fileType ? fileType.toLowerCase() : 'png' + var base64 + if (imageType === 'jpg' || imageType === 'jpeg') { + var tmpCanvas = canvas.cloneNode(true) + var tmpCtx = tmpCanvas.getContext('2d') + tmpCtx.fillStyle = '#fff' + tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height) + tmpCtx.drawImage(canvas, 0, 0) + base64 = tmpCanvas.toDataURL(`image/jpeg`, qualit) + } else { + base64 = canvas.toDataURL(`image/${imageType}`, qualit) + } + invoke(callbackId, { errMsg: 'canvasToTempFilePath:ok', tempFilePath: base64 }) + + // TODO base64返回的是高清图,如果将img通过drawImage画到等宽高的canvas会出现显示不全问题, drawImage在次做了高清处理 // var img = new Image() // img.onload = function () { // canvas.width = destWidth || imgData.width // canvas.height = destHeight || imgData.height + // c2d.fillStyle = '#fff' + // c2d.fillRect(0, 0, canvas.width, canvas.height) // c2d.drawImage(img, 0, 0) - // base64 = canvas.toDataURL(`image/${fileType.toLowerCase()}`, qualit) + // base64 = canvas.toDataURL(`image/jpeg`, qualit) // invoke(callbackId, { // errMsg: 'canvasToTempFilePath:ok', // tempFilePath: base64 -- GitLab