From 9c25d3ed66dfc6fd7c92486d9154725d5eaf8f56 Mon Sep 17 00:00:00 2001 From: ysCha Date: Mon, 13 Apr 2026 11:04:59 +0900 Subject: [PATCH] =?UTF-8?q?[1960]=EC=B6=9C=EB=A0=A5=EB=90=9C=20[=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=EB=8F=84=C2=B7=EA=B3=84=ED=86=B5=EB=8F=84]=EC=97=90?= =?UTF-8?q?=20=EA=B0=80=EB=8C=80=EA=B0=80=20=ED=91=9C=EC=8B=9C=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/floorPlan/useImgLoader.js | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/hooks/floorPlan/useImgLoader.js b/src/hooks/floorPlan/useImgLoader.js index dc272441..47eea944 100644 --- a/src/hooks/floorPlan/useImgLoader.js +++ b/src/hooks/floorPlan/useImgLoader.js @@ -84,15 +84,25 @@ export function useImgLoader() { const originalBg = canvas.backgroundColor canvas.backgroundColor = '#ffffff' - // CORS 대응: 이미지 오브젝트에 crossOrigin 설정 - canvas.getObjects('image').forEach((obj) => { - if (obj.getSrc) { - const img = new Image() - img.crossOrigin = 'anonymous' - img.src = obj.getSrc() - obj.setElement(img) - } - }) + // CORS 대응: 이미지 오브젝트에 crossOrigin 설정 (로드 완료 대기) + const imageObjects = canvas.getObjects('image').filter((obj) => obj.getSrc) + await Promise.all( + imageObjects.map( + (obj) => + new Promise((resolve) => { + const img = new Image() + img.crossOrigin = 'anonymous' + img.onload = () => { + obj.setElement(img) + resolve() + } + img.onerror = () => { + resolve() + } + img.src = obj.getSrc() + }), + ), + ) canvas.renderAll()