diff --git a/src/core/service/api/context/canvas.js b/src/core/service/api/context/canvas.js index 3aeb1da19f73b0f5890dbf5e66d2fba80b03cdff..cd60bfe4ea9af50495808cad1b3b16ccb3ca6a24 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