Nodes/ComfyUI-DonutNodes/Donut Krea2 Image Conditioning
ComfyUI Node

Donut Krea2 Image Conditioning

Mix three reference images into Krea 2 with per-image strength

By DonutsDelivery·Created about a year ago·Updated about 12 hours ago· 25
Donut Krea2 Image Conditioning
  • clip
  • image1
  • image2
  • image3
  • vae
  • conditioning
prompt
text_strength1.00
rebalancetrue
strength11.00
strength21.00
strength31.00
multiplier1.00

Krea 2's text encoder is Qwen3-VL 4B - a vision-language model - which means images are not a separate conditioning channel; they're embedded straight into the prompt as vision tokens. DonutKrea2ImageConditioning is the node that exploits that: it lets you blend up to three reference images into a Krea 2 edit or generation, each with its own strength slider, plus a text instruction. If you've ever wanted "this person's face" and "this pose" and "this lighting" as separate, independently-weighted inputs, this is the cleanest expression of it in the pack.

How the blend works

The mechanism is documented right in the source, and it's refreshingly legible:

final = text_strength × text_cond + Σ strength_i × (img_i_cond − text_cond)

Each reference image is CLIP-encoded separately and compared against a text-only baseline; strength=0 means pure text, strength=1 means full image influence, >1 is deliberate overemphasis. text_strength=0 drops the text baseline entirely for pure image-delta conditioning. The rebalance toggle (default on) reboosts the blended result to match your requested text_strength magnitude - so if you lower image strength, text gets proportionally louder and your effective CFG stays constant instead of drifting. That's the subtle bit people get wrong with multi-image conditioning, and it's handled for you.

There's an optional vae input too, but the docstring is upfront that it's for forward-compatibility: it stores reference_latents on the conditioning for future use, since the model consumes only vision tokens today. Feed it if you like; don't expect it to change the output yet.

The inputs that matter

  • clip - the Krea2 CLIP model (Qwen3-VL 4B). Required; grab it from your Krea 2 checkpoint stack.
  • prompt - the text instruction describing the edit or generation.
  • text_strength (default 1, 0–10) - text influence; you'll usually leave it at 1.
  • image1 / image2 / image3 with strength1/2/3 - the three reference slots. Wire in images you want to influence the result and dial each independently.
  • multiplier (default 1, -1000 to 1000) - a global gain on the whole conditioning tensor; 1.0 = unchanged. A blunt master volume for the entire blend.

Output is a single conditioning, which you feed straight into your sampler's positive (or wherever you'd wire a normal positive encode). The pack suggests pairing it with ConditioningKrea2Rebalance for per-layer tap weighting, and DonutWeightVectorScale if you're generating rebalance weight strings.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/DonutsDelivery/ComfyUI-DonutNodes.git donutnodes
cd donutnodes
python -m pip install -r requirements.txt

or ComfyUI Manager → "DonutNodes," then restart. No model downloads beyond the Krea 2 checkpoint stack you already need.

Where it shines

Krea 2's editing path is this node's natural home - the same Qwen3-VL stack was chosen specifically so the model could later support editing, and reference images are how you steer it. Start with strength at 1 for your primary reference, 0.3–0.6 for secondary ones, and use rebalance on. The one thing to keep in mind: unlike old CLIP-era conditioning, these images travel as vision tokens, so they carry composition and content, not just "style" - treat the sliders as blending what's in the frame, and adjust your prompt accordingly.

CategoryDonut/conditioning

Inputs (12)

NameTypeDefaultDescription
clipCLIPKrea2 CLIP model (Qwen3-VL 4B)
promptSTRINGText instruction describing the edit or generation
text_strengthFLOAT1.000–10Text influence: 0=no text baseline, 1=full, >1=overemphasis
rebalanceBOOLEANtrueReboost blended conditioning to match the requested text_strength magnitude. When lowering image strength, text gets proportionally louder so overall CFG stays constant.
image1optIMAGEFirst reference image
strength1optFLOAT1.000–10Image1 influence: 0=text-only, 1=full, >1=overemphasis
image2optIMAGESecond reference image
strength2optFLOAT1.000–10
image3optIMAGEThird reference image
strength3optFLOAT1.000–10
vaeoptVAEOptional VAE. Stores reference_latents on the conditioning for forward-compatibility.
multiplieroptFLOAT1.00-1000–1000Global gain on the conditioning tensor. 1.0 = unchanged.

Outputs (1)

NameTypeDescription
conditioningCONDITIONING