From f43c56236b7412351ed20a1c956e69fef52a59bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com> Date: Tue, 14 Apr 2026 10:02:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=B2=E5=8C=96=E8=8B=B9=E6=9E=9C=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E5=99=A8=E9=97=AA=E5=B1=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../managers/liquify/LiquifyRealTimeUpdater.js | 12 +++++++----- src/component/Canvas/canvasExample.vue | 8 ++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyRealTimeUpdater.js b/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyRealTimeUpdater.js index a3c85684..15e2f797 100644 --- a/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyRealTimeUpdater.js +++ b/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyRealTimeUpdater.js @@ -85,7 +85,7 @@ export class LiquifyRealTimeUpdater { if (isDrawing && this.config.useDirectUpdate) { // 拖拽过程中使用快速更新(降低质量以提高性能) - this._fastUpdate(imageData); + await this._fastUpdate(imageData); } else { // 拖拽结束后使用完整更新(最高质量) await this._fullUpdate(imageData); @@ -124,7 +124,7 @@ export class LiquifyRealTimeUpdater { * @param {ImageData} imageData 图像数据 * @private */ - _fastUpdate(imageData) { + async _fastUpdate(imageData) { if (!this.targetObject || !this.targetObject._element) { return; } @@ -138,12 +138,14 @@ export class LiquifyRealTimeUpdater { // 直接更新fabric对象的图像源(使用PNG格式保持质量) const targetElement = this.targetObject._element; - // 方案1: 直接设置src属性(最高性能) const dataURL = this.tempCanvas.toDataURL("image/png", quality); - if (targetElement.src !== dataURL) { - targetElement.src = dataURL; + // targetElement.src = dataURL; + const image = new Image(); + image.src = dataURL; + await image.decode(); + this.targetObject.setElement(image); // 关键优化:直接设置fabric对象为脏状态,但不立即渲染 // this.targetObject.dirty = false; // 标记为不需要立即渲染 diff --git a/src/component/Canvas/canvasExample.vue b/src/component/Canvas/canvasExample.vue index 513e2778..49aadbb3 100644 --- a/src/component/Canvas/canvasExample.vue +++ b/src/component/Canvas/canvasExample.vue @@ -447,6 +447,7 @@ +