diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index 7a354d82c..00f69711a 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -2146,6 +2146,7 @@ export function ImageNode({ updateCurrentGeneratingTaskNode((currentData) => ({ ...currentData, src: imageUrl, + thumbnailUrl: image?.thumbnailUrl || imageUrl, status: "completed", prompt: task.result?.prompt || currentData.prompt || "图片生成结果", model: task.result?.model || task.result?.modelRef || currentData.model, @@ -2472,14 +2473,18 @@ export function ImageNode({ ); }, [node.size.width, shouldUseHighFidelityDisplayImage, viewportZoom]); const displayImageQuality = shouldUseHighFidelityDisplayImage ? 92 : 88; + const displayImageSource = + data.thumbnailUrl && !shouldUseHighFidelityDisplayImage + ? data.thumbnailUrl + : data.src; const displayImageSrc = useMemo( () => - buildImageProxyUrl(data.src, { + buildImageProxyUrl(displayImageSource, { width: displayImageWidth, quality: displayImageQuality, format: "webp", }), - [data.src, displayImageQuality, displayImageWidth] + [displayImageQuality, displayImageSource, displayImageWidth] ); const fullscreenPreviewSrc = useMemo(() => { const originalUrl = resolveOriginalImageUrl(data.src || ""); @@ -4551,6 +4556,7 @@ export function ImageNode({ updateNode(newNodeId, { data: { src: generatedUrl, + thumbnailUrl: generatedImage?.thumbnailUrl || generatedUrl, status: "completed", prompt: task.result?.prompt || diff --git a/types/canvas/index.ts b/types/canvas/index.ts index 2683959d2..01075e88a 100644 --- a/types/canvas/index.ts +++ b/types/canvas/index.ts @@ -59,6 +59,7 @@ export interface ImageTextEditItem { // 图片节点数据 export interface ImageNodeData { src: string; + thumbnailUrl?: string; assetId?: string; title?: string; note?: string;