Krea2 img2img ⚡
Everything about a Krea2 image, one node before the sampler
- model
- clip
- vae
- images
- model
- positive
- negative
- latent
- denoise
Krea2's graph is short: load, prep, sample. Krea2 img2img is the prep - one node that takes your prompt, builds the latent (or starts from a photo), attaches a control image if you're using a Control LoRA, and outputs model, positive, negative, latent and denoise ready for a stock KSampler. You type the prompt directly into it. There's no separate CLIPTextEncode, no separate empty-latent node, and no separate ControlNet Apply in the default graph. Everything that Krea2 needs before sampling happens here.
The inputs that matter
prompt/negative_prompt- typed here. Krea2's encoder is a Qwen3-VL, so write sentences.image- the init image for img2img and (inauto_depth/auto_cannymode) the source photo the control map is derived from. Leave unconnected for txt2img.control_mode- the interesting one.auto_depth(default) derives a depth map fromimageusing the pack's Depth Anything V2;auto_cannyderives a canny edge map (plaincv2.Canny, no model, no download);manualmeans you connectcontrol_imageyourself - for any widened-projection Control LoRA the two auto modes don't cover (pose/lineart/normal).control_image- your own control map (depth/canny/pose/etc). Overrides auto-derivation whenever connected, and is required inmanualmode.control_channel_mode/control_normalize/control_invert/control_batch_mode- the map-prep knobs:grayscalefor depth,rgbfor canny/pose/lineart;per_image_minmaxfor depth,nonefor edges;control_invertif your preprocessor's convention is reversed from the LoRA's training convention; batch mode for frames.edit_reference- the other Krea2 LoRA mechanism (see below). Only for in-context/edit-style LoRAs.strength,width/height,batch_size- the img2img/geometry basics.
Two LoRAs, two mechanisms - read this twice
There are two unrelated families of Krea2 LoRA in the wild, and this node supports both, deliberately:
- Widened-projection Control LoRAs (the depth one) ship with the DiT's first input-projection layer widened to accept control tokens. Loaded via
Krea2 Control LoRA Loader, and used here throughcontrol_mode/control_image. This is "structure comes from the map, content from the prompt." - Ordinary in-context LoRAs (e.g.
krea2_canny-v0.1.safetensors) have no widened projection - they're plain LoRAs, loaded with stockLoraLoaderModelOnly, and used here throughedit_reference: the reference image gets VAE-encoded and attached to positive conditioning asreference_latents. This is the Qwen-Image-Edit-style "structure from the edges, content from the text prompt" flow.
The only thing that changes between the two is which input slot your photo goes into: control_image-adjacent modes for the depth LoRA, edit_reference for the canny one. Mixing them does nothing - and the node guards the dangerous direction (Control LoRA loaded, no usable image → it raises instead of sampling a half-configured model; control image with no Control LoRA → ignored with a warning).
Installing it
Part of the CCTech pack, installed once:
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
cd ComfyUI-GGUF-Loader
pip install --upgrade gguf
Restart; find it under 🤖 CCTech/Krea2. You still need Krea2 Model Loader feeding it the model/clip/vae, and the Control LoRA loader (or a stock LoRA loader for the in-context kind) upstream on model.
The workflow
Krea2 Model Loader → Krea2 Control LoRA Loader (any Krea2 LoRA file - it auto-detects which mechanism it needs) → this node → Krea2 KSampler or stock KSampler → VAE Decode. That's the whole thing. The one-node design is the pack's answer to the reference pack's separate Encode+Apply split, and it's genuinely easier to keep straight.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| prompt | STRING | — | |
| negative_prompt | STRING | — | |
| strength | FLOAT | 0.600–1 | img2img only. How much of the init image(s) to discard. Ignored without images. |
| batch_size | INT | 11–4096 | — |
| width | INT | 102416–16384 | Output size. With init image(s) this resizes them. |
| height | INT | 102416–16384 | — |
| imagesopt | IMAGE | One or more init images for img2img (batch-aware - a batch of N becomes N independent img2img generations). With identity_edit=True this is instead the Identity Edit LoRA's source photo. Leave unconnected for txt2img. | |
| identity_editopt | BOOLEAN | false | Drive the Krea 2 Identity Edit LoRA correctly: injects `images` as in-context source tokens and grounds prompt/negative_prompt on the same image through Qwen3-VL, instead of plain text-only encoding. Needs `images` connected and the LoRA loaded upstream (e.g. via LoraLoaderModelOnly) - this toggle only adds the driving mechanism, it doesn't load the LoRA itself. Forces a full-noise target (ignores strength) - see the class docstring. |
| ref_boostopt | FLOAT | 1.000–1000 | identity_edit only. Reference-fidelity dial: how hard the target locks onto images's appearance. 1.0 = off (neutral), >1 pulls harder, <1 loosens. |
| grounding_pxopt | INT | 7680–4096 | identity_edit only. Cap longest side fed to Qwen3-VL for grounding; 0 = native. Lower = stronger edit adherence, higher = stronger identity/likeness. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| denoise | FLOAT | — |