Nodes/ComfyUI-GGUF-Loader/Krea2 ControlNet img2img ⚡
ComfyUI Node

Krea2 ControlNet img2img ⚡

Depth, canny, or your own map

By ChrisColeTech·Created 18 days ago·Updated about 23 hours ago· 7
Krea2 ControlNet img2img ⚡
  • model
  • clip
  • vae
  • images
  • control_image
  • model
  • positive
  • negative
  • latent
  • denoise
prompt
negative_prompt
strength0.60
batch_size1
width1024
height1024
control_modeauto_depth
depth_ckpt_namedepth_anything_v2_vitb.pth
control_channel_modegrayscale
control_normalizeper_image_minmax
control_invertfalse
control_batch_modeindependent_images

Plain Krea2 img2img changes a photo's pixels but leaves you at the mercy of the prompt for where things go. This node is the version that lets you steer the structure - depth, edges, pose - the way you'd use a ControlNet on an SDXL-era model. Except Krea2 doesn't have a ControlNet architecture; it has Control LoRAs, and the wiring is different enough that a dedicated node is worth having.

Here's the mental model. Krea2's Control LoRAs come in two flavors, and the pack's Krea2 Control LoRA Loader auto-detects which you've got: the widened-projection kind (trained to accept image tokens plus control tokens through the DiT's input projection) and the ordinary in-context kind. What nothing in the LoRA file tells you is what type of control signal it wants - depth, canny, something else. That's what this node's control_mode is for.

What it does

Everything Krea2 img2img does - prompt encoding, VAE-encoding your source photo, building the init latent - plus attaching a control image to the loaded Control LoRA. The control image gets resolved three ways:

  • auto_depth (default) - derives a depth map from your images automatically using Depth Anything V2. Weights auto-download into models/depth_anything_v2/ on first use. Right for the depth Control LoRA (e.g. the depth-control-lora that circulates from the Krea-2-depth-controlnet release).
  • auto_canny - plain cv2.Canny edge detection, no model, no download. Right for canny checkpoints.
  • manual - no derivation; connect control_image yourself. Use it for pose/lineart/normal LoRAs the two auto modes don't cover - those preprocessors come from the separate ComfyUI-ControlNet-Nodes package, and you wire their output in here.
  • none - skip control entirely for this call, even with a Control LoRA loaded. Handy for A/B-testing without rewiring the graph.

Connecting control_image explicitly always overrides auto-derivation. Two small companion settings: control_channel_mode (grayscale for depth, rgb for canny/pose) and control_normalize (per-image minmax for depth, none for edges).

The rest of the knobs

strength (default 0.6) is your img2img dial - how much of the init image to discard. width/height are output size; with images connected they resize them. Outputs are model, positive, negative, latent, denoise, which feed a stock KSampler directly. Minimal graph: Krea2 Model LoaderKrea2 Control LoRA Loader → this node → KSamplerVAE Decode.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
pip install --upgrade gguf

Restart, drop your Krea2 model, Qwen3-VL-4B encoder, VAE and Control LoRA into the usual model folders. Node is under 🤖 CCTech/Krea2.

Gotchas

The guard rails are worth knowing. A Control LoRA loaded with no usable control image (and control_mode not none) raises immediately - it refuses to silently sample a half-configured model. The reverse is fine: control_image connected with no Control LoRA just gets ignored with a warning, so you can leave a preprocessor chain wired while you toggle the LoRA loader. Both are deliberate, and both save you from the "why is my output ignoring the depth map" class of debugging.

Category🤖 CCTech/Krea2

Inputs (17)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE
promptSTRING
negative_promptSTRING
strengthFLOAT0.600–1img2img only. How much of the init image(s) to discard. Ignored without images.
batch_sizeINT11–4096
widthINT102416–16384Output size. With init or control image(s) this resizes them.
heightINT102416–16384
imagesoptIMAGEOne or more init images for img2img (batch-aware - a batch of N becomes N independent img2img generations), and (in auto_depth/auto_canny modes) the source photo the control image is derived from. Leave unconnected for txt2img.
control_modeoptCOMBOauto_depthauto_depth/auto_canny: derive the control image from `images` automatically - pick whichever matches the loaded Control LoRA. manual: no automatic derivation, connect control_image yourself - use this for any Control LoRA the two auto modes don't cover (pose/lineart/normal). none: skip control attachment entirely even if a Control LoRA is loaded - for toggling control off without rewiring or removing the loader.
depth_ckpt_nameoptCOMBOdepth_anything_v2_vitb.pthauto_depth mode only. Model size for the automatic depth estimation. Downloads on first use if not already in models/depth_anything_v2.
control_imageoptIMAGEManual control map - a depth/canny/pose/etc. map. Overrides auto_depth when connected. Required in manual mode.
control_channel_modeoptCOMBOgrayscalegrayscale for depth; rgb for canny/pose/lineart/normal.
control_normalizeoptCOMBOper_image_minmaxper_image_minmax for depth; none for canny/pose/lineart/normal.
control_invertoptBOOLEANfalseFlip if the preprocessor's convention is reversed from the LoRA's training convention (e.g. depth preview shows near objects dark instead of white).
control_batch_modeoptCOMBOindependent_images2 options: independent_images, video_frames

Outputs (5)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
denoiseFLOAT