
Character Portrait Relighting — это компактный рабочий процесс ComfyUI, который берёт один портрет и рендерит его при разных кинематографических схемах света, сохраняя идентичность персонажа. Он использует три ноды по цепочке: LoadImage для загрузки исходного портрета, GeminiImage2Node для relighting в режиме изображение-в-изображение через внешний API и SaveImage для записи результатов. Рабочий процесс настроен на запуск модели Nano Banana Pro внутри GeminiImage2Node, которая хорошо подходит для фотореалистичных портретов.
Технически relighting выполняется за счёт генерации, обусловленной вашим загруженным изображением и текстовым промптом, описывающим нужную схему света (например: "soft key light from camera-left, warm rim light, low-fill, filmic contrast"). GeminiImage2Node отправляет изображение и промпт в API и возвращает изображение с новым светом, сохраняя позу и структуру лица на основе входа. Чтобы сильнее удерживать идентичность, повышайте сохранение изображение-в-изображение (обычно это параметр strength или guidance). Чтобы получить несколько вариантов из одного портрета, продублируйте GeminiImage2Node (каждый с разным промптом света) и подключите их все к одному LoadImage, затем сохраните каждый результат со своей меткой через SaveImage.
API
Использовать этот рабочий процесс из кода
Каждый рабочий процесс Comfy — это JSON-граф. Ниже представлен payload этого процесса, точно так же, как его запускает ComfyUI: получите его по ссылке, храните в системе контроля версий или загрузите в ComfyUI и выполняйте по узлам.
Запустите его на TypeScript или Python с помощью Comfy SDK. Один и тот же код работает с Comfy Cloud или вашим собственным ComfyUI — меняется только базовый URL.
// Install (beta)
npm i @comfyorg/sdk
// Run "Переосвещение Портретов Персонажей" (TypeScript)
import { Comfy } from "@comfyorg/sdk";
const client = new Comfy({ apiKey: "comfyui-..." });
// This workflow, exported in API format (see note below)
const wf = await client.workflows.fromFile("template_character_portrait_relighting_api.json");
const asset = client.assets.fromFile("input.png");
wf.setInput("124", "image", asset); // LoadImage
const job = await client.run(wf);
await job.getOutputs("138")[0].toFile("output.png"); // SaveImageSDK принимает рабочий процесс в API-формате: откройте этот процесс в ComfyUI и используйте Файл → Экспортировать рабочий процесс (API).
Доступ к API Comfy Cloud требует плана с API-ключом.
FAQ













