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 @@
+