修复角色图去背景读取失败

去背景前统一解析私有图片资源

裁扩本地编辑复用图片引用解析

补充角色图去背景回归测试
This commit is contained in:
2026-06-25 20:29:58 +08:00
parent 9516132e94
commit 2c53fc302e
2 changed files with 74 additions and 17 deletions
@@ -14,6 +14,7 @@ import type {
EditorAssetSnapshot,
EditorProjectSnapshot,
} from '../../services/image-editor/editorProjectClient';
import { resolveEditorImageReferenceDataUrl } from '../../services/image-editor/editorImageReference';
import { resizeCropExpandFrame } from './ImageCanvasCropExpandModel';
import type {
CanvasGenerationDialogState,
@@ -468,8 +469,9 @@ export function useImageCanvasGenerationWorkflow({
useState<UiAssetExtractionState | null>(null);
const [quickEditSelectionState, setQuickEditSelectionState] =
useState<UiAssetExtractionState | null>(null);
const quickEditSelectionStateRef =
useRef<UiAssetExtractionState | null>(null);
const quickEditSelectionStateRef = useRef<UiAssetExtractionState | null>(
null,
);
const cropExpandPanelRef = useRef<CropExpandPanelState | null>(null);
const cropExpandResizeDragRef = useRef<CropExpandResizeDragState | null>(
null,
@@ -902,7 +904,8 @@ export function useImageCanvasGenerationWorkflow({
.find(
(dialog) =>
dialog.generatedLayerId === sourceLayer.id ||
(!dialog.generatedLayerId && dialog.sourceLayerId === sourceLayer.id),
(!dialog.generatedLayerId &&
dialog.sourceLayerId === sourceLayer.id),
);
return createQuickEditPanelDraft(sourceLayer, {
imageModel: sourceDialog?.imageModel,
@@ -1202,8 +1205,11 @@ export function useImageCanvasGenerationWorkflow({
status: 'processing',
errorMessage: undefined,
});
const sourceImageSrc = await resolveEditorImageReferenceDataUrl(
cropExpandSourceLayer.objectKey?.trim() || cropExpandSourceLayer.src,
);
const result = await renderCropExpandImage({
source: cropExpandSourceLayer.src,
source: sourceImageSrc,
insets,
});
layerCounterRef.current += 1;
@@ -1263,7 +1269,10 @@ export function useImageCanvasGenerationWorkflow({
setCropExpandPanel(null);
setQuickEditPanel(null);
try {
const result = await removeImageBackground(sourceLayer.src);
const sourceImageSrc = await resolveEditorImageReferenceDataUrl(
sourceLayer.objectKey?.trim() || sourceLayer.src,
);
const result = await removeImageBackground(sourceImageSrc);
updateSourceLayer(sourceLayer.id, (layer) => ({
...layer,
src: result.imageSrc,
@@ -1285,6 +1294,7 @@ export function useImageCanvasGenerationWorkflow({
}
},
[
resolveEditorImageReferenceDataUrl,
setActiveSidebarPanel,
setImageContextMenu,
setMetadataLayer,
@@ -1533,7 +1543,8 @@ export function useImageCanvasGenerationWorkflow({
...currentState,
tool: currentState.tool === tool ? null : tool,
draftMark: null,
status: currentState.status === 'failed' ? 'idle' : currentState.status,
status:
currentState.status === 'failed' ? 'idle' : currentState.status,
errorMessage:
currentState.status === 'failed'
? undefined