Nodes/ComfyUI-GGUF-Loader/Qwen-Image ControlNet img2img ⚡
ComfyUI Node

Qwen-Image ControlNet img2img ⚡

One node that talks to every Qwen-Image ControlNet format

By ChrisColeTech·Created 18 days ago·Updated about 23 hours ago· 7
Qwen-Image ControlNet img2img ⚡
  • model
  • clip
  • vae
  • images
  • qwen_control
  • control_image
  • mask
  • model
  • positive
  • negative
  • latent
  • denoise
prompt
negative_prompt
strength0.60
batch_size1
width1024
height1024
control_modemanual
depth_ckpt_namedepth_anything_v2_vitb.pth
control_strength1.00

Qwen-Image's ControlNet story is a mess of formats, and this node is the broom. The ecosystem circles three different attachment mechanisms - InstantX/Union checkpoints, Qwen-Image-Fun, and DiffSynth patches - and each wires into ComfyUI differently: some attach to conditioning like a classic ControlNet, some patch the model directly. The pack's Qwen-Image ControlNet Loader figures out which format you loaded and hands you a QWEN_IMAGE_CONTROL token. This node does the attaching, so you never have to know or care which mechanism your file needs.

It's everything Qwen-Image img2img does - prompt encoding, VAE-encoding your source photo, building the init latent - plus control attachment, plus (when connected) a mask for inpaint checkpoints. For DiffSynth patches it clones the MODEL and applies the patch; for InstantX/Union/Fun it stamps the control hint onto your CONDITIONING the same way stock ControlNetApplyAdvanced does. Outputs are model, positive, negative, latent, denoise straight into a stock KSampler.

The inputs that matter

  • qwen_control - the loaded checkpoint token from Qwen-Image ControlNet Loader. Ignored without it.
  • images - your init photo(s) for img2img, and in the auto modes the source the control map is derived from. Leave unconnected for txt2img.
  • control_mode - picks how control_image is produced, since nothing in the file says what preprocess it wants: manual (default, connect your own map - required for inpaint), auto_canny (plain cv2 edges, no download), auto_depth (Depth Anything V2, auto-downloads weights), or none (skip control for this call even if qwen_control is connected). Explicit control_image always overrides.
  • control_strength (default 1.0) - how hard the condition bites.
  • mask - for inpaint checkpoints, the region to fix. Note the tooltip truth: mask only refines the region, it doesn't replace the control image - you still need control_image even for inpaint.

Installing

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

Restart, drop your Qwen-Image model (GGUF or safetensors), Qwen3 encoder, VAE and ControlNet checkpoint in the usual folders. The nodes sit under 🤖 CCTech/Qwen-Image. Preprocessors beyond canny/depth (normal, soft edge, pose) come from the separate ComfyUI-ControlNet-Nodes package - wire their output into control_image with control_mode=manual.

Gotchas

Same guard rails as its Krea2 sibling: qwen_control with nothing usable to attach (outside none mode) raises rather than sampling a half-configured model, and control_image with no qwen_control is ignored with a warning. Qwen-Image spans more control types than the pack can auto-detect from the file, so the auto modes are genuinely best-effort - for a pose checkpoint, manual with a real preprocessor is the reliable path.

Category🤖 CCTech/Qwen-Image

Inputs (16)

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_canny/auto_depth modes) the source photo the control image is derived from. Leave unconnected for txt2img.
qwen_controloptQWEN_IMAGE_CONTROLFrom QwenImageControlNetLoader.
control_modeoptCOMBOmanualmanual: connect control_image yourself. auto_canny/auto_depth: derive it from `images` automatically - pick whichever matches the loaded checkpoint. none: skip control attachment entirely even if qwen_control is connected - for toggling control off without rewiring. Ignored without qwen_control.
depth_ckpt_nameoptCOMBOdepth_anything_v2_vitb.pthauto_depth mode only. Downloads on first use if not already in models/depth_anything_v2.
control_imageoptIMAGEControl map matching qwen_control - a canny/depth/etc map. Overrides auto_canny/auto_depth when connected. Required in manual mode.
maskoptMASKFor an inpaint checkpoint - the region to inpaint. Not derivable automatically.
control_strengthoptFLOAT1.00-10–10

Outputs (5)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
denoiseFLOAT