MinusZone - StylizePhotoControlNetApply
The ControlNet loader for the stylize sampler
- control_net
The name oversells it a little. MZ_StylizePhotoControlNetApply doesn't apply anything - it's a ControlNet loader that bundles up to two ControlNets into one custom output for its sibling, MZ_StylizePhotoKSamplerNode. Run the stylize sampler bare and your img2img pass has no structural guardrails, so at 0.75 denoise faces can drift and details go mushy. This node is the pack's fix: pick a tile ControlNet and/or a canny ControlNet from two dropdowns, wire the single output into the sampler, and the sampler applies them for you.
In plain ComfyUI you'd build this with a ControlNetLoader plus ControlNetApplyAdvanced and set the weights yourself. Here that whole chain collapses into two dropdowns - and the weights are set for you, hardcoded in the pack's source. The tile condition is preprocessed by resizing to 512px and applied at strength 0.35; canny runs an OpenCV edge pass (cv2.Canny, 100/200) at strength 0.45. Both run from step 0 to 1. You can't tune any of that from the UI, which is either the point (simplicity) or a reason to use a normal ControlNet stack instead, depending on how much control you need.
The inputs and the one output
Just two inputs, both required - though "none" is always a valid choice:
- tile_control_net_name - an SDXL tile ControlNet from your
ComfyUI/models/controlnetfolder. The author's examples use TTPLanet_SDXL_Controlnet_Tile_Realistic. Tile at low weight is the classic way to restyle while keeping the source structure - that's what makes the clay version of your photo still your photo. - canny_control_net_name - an SDXL canny ControlNet, e.g.
diffusers/controlnet-canny-sdxl-1.0from the README. It adds hard-edge structure back, which helps on portraits and architecture.
Set either to "none" to skip it. The output is control_net, typed StylizePhoto_CONTROL_NET - a custom type that only plugs into MZ_StylizePhotoKSamplerNode's optional control_net input. That's the entire wiring story: loader out → sampler in.
Install and usage
Same as the rest of the pack: ComfyUI Manager → search "ComfyUI-StylizePhoto-MZ", or:
cd ComfyUI/custom_nodes
git clone https://github.com/MinusZoneAI/ComfyUI-StylizePhoto-MZ
then restart. No extra dependencies beyond the pack's own - which includes OpenCV, so if the nodes don't load at all, pip install opencv-python in your ComfyUI environment. The ControlNet files you must supply yourself: grab an SDXL tile and/or canny model, drop them into models/controlnet, and they'll appear in the dropdowns.
Things to know before you trust it
- It's a closed little world. The custom output type means this loader won't feed a normal ControlNetApplyAdvanced, and the sampler won't accept a standard ControlNet either. If you want per-pass control weight, this pack isn't built for you - build the tile/canny chain by hand instead.
- "Apply" is misleading - the sampler does the applying, with preprocessors and strengths it decides on. What you control here is only which ControlNet files get loaded.
- SDXL-era and archived. The repo hasn't been touched since May 2024 and is now archived. Use SDXL ControlNets (SD 1.5 or Flux files won't fit), and don't expect updates.
It's a small, honest convenience node: two dropdowns, one wire, composition guardrails for a one-click stylize workflow. If you just want the clay look without thinking about control weight, it does exactly the job.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| tile_control_net_name | COMBO | 1 options: none | |
| canny_control_net_name | COMBO | 1 options: none |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| control_net | StylizePhoto_CONTROL_NET | — |