Import external canvas outputs

This commit is contained in:
Codex
2026-05-11 21:13:55 +08:00
parent 91cba60e5e
commit 5266462603

View File

@@ -475,6 +475,10 @@ function normalizeExternalResolution(value: unknown) {
return '1080P';
}
function firstExternalImageArray(...values: unknown[]) {
return values.find((value): value is unknown[] => Array.isArray(value) && value.length > 0) || [];
}
function convertExternalCanvasProject(value: unknown, assetMap?: ExternalAssetMap): CanvasProjectState {
const input = asRecord(value);
const view = asRecord(input.view || input.viewport);
@@ -512,7 +516,26 @@ function convertExternalCanvasProject(value: unknown, assetMap?: ExternalAssetMa
}
const contentUrl = resolveExternalAssetUrl(node.content || node.imageUrl || node.url || node.src || data.imageUrl || data.url || settings.imageUrl || settings.url, assetMap);
const thumbnailUrl = resolveExternalAssetUrl(node.thumbnailUrl || node.thumbnail || data.thumbnailUrl || settings.thumbnailUrl || settings.thumbnail, assetMap);
const generatedImages = Array.isArray(settings.generatedImages) ? settings.generatedImages : [];
const generatedImages = firstExternalImageArray(
settings.generatedImages,
settings.outputImages,
settings.outputs,
settings.results,
settings.images,
settings.generated,
data.generatedImages,
data.outputImages,
data.outputs,
data.results,
data.images,
data.generated,
node.generatedImages,
node.outputImages,
node.outputs,
node.results,
node.images,
node.generated,
);
const outputImages = generatedImages
.map((item) => {
if (typeof item === 'string') return resolveExternalAssetUrl(item, assetMap);
@@ -523,6 +546,7 @@ function convertExternalCanvasProject(value: unknown, assetMap?: ExternalAssetMa
.filter(Boolean);
const imageUrl = outputImages[0] || contentUrl || thumbnailUrl;
const prompt = firstString(node.prompt, settings.prompt, data.prompt);
const negativePrompt = firstString(node.negativePrompt, node.negative_prompt, settings.negativePrompt, settings.negative_prompt, data.negativePrompt, data.negative_prompt);
const ratio = normalizeExternalRatio(settings.ratio);
const resolution = normalizeExternalResolution(settings.ratio || settings.previewSize || settings.previewActualSize);
return {
@@ -535,6 +559,7 @@ function convertExternalCanvasProject(value: unknown, assetMap?: ExternalAssetMa
zIndex: index + 1,
title,
prompt,
negativePrompt: negativePrompt || undefined,
imageUrl: type === 'image' ? imageUrl : undefined,
referenceImage: type === 'img2img' ? imageUrl || undefined : undefined,
outputImages: outputImages.length > 0 ? outputImages : imageUrl ? [imageUrl] : undefined,