Icy CLIPVisionEncode
The image reader — CLIPVisionEncode turns a reference picture into usable features
- clip_vision
- image
- CLIP_VISION_OUTPUT
IcyCLIPVisionEncode is the IcyHider clone of CLIPVisionEncode, and it's the node that lets a workflow see. Where CLIPTextEncode turns words into guidance, this one turns a reference image into features - and those features power a whole family of tricks: IP-Adapter-style reference conditioning, style-model apply, and anything that wants "make it look like this image" instead of "make it look like this description."
What it does
Three inputs:
clip_vision- the CLIP vision model itself, from aCLIPVisionLoader. A vision encoder is a distinct file type; it doesn't come bundled with a checkpoint, so you load it separately.image- the reference picture to analyze. Load it withLoadImage(or pull it from anywhere upstream).crop-centerornone. Center-cropping makes the reference square before encoding, which matches what the vision model expects;noneskips the crop and can produce slightly different (sometimes better, sometimes weirder) features for non-square images. Default iscenter, and it's a safe place to stay unless you're chasing a specific quirk.
Output is a single CLIP_VISION_OUTPUT - an object carrying the image features and the vision model's patch embeddings. It doesn't look like much on the wire, but that's the payload: IPAdapter-style nodes and StyleModelApply consume it to inject the reference image's look into generation.
How it fits
The classic chain: CLIPVisionLoader → this node → a reference/transfer node (IP-Adapter, StyleModelApply, etc.) → the sampler. If you're following an IP-Adapter workflow, this is the step people hand-wave over, and it's exactly the part that makes "put this person's vibe into the image" work. The CLIP vision model and the downstream consumer must agree - a vision encoder that's too old for the consumer, or a crop mismatch, produces weak or broken transfer.
Where people get burned: grabbing the text CLIP and feeding it here. Text encoder ≠ vision encoder; the types are different (CLIP vs CLIP_VISION) and ComfyUI usually refuses, but when it doesn't, you get nonsense. And if your reference transfer seems to do nothing at all, check the CLIP_VISION_OUTPUT is actually reaching the consumer node - it's a common dangling wire because the output type is less familiar.
The "Icy" caveat
Outputs CLIP_VISION_OUTPUT - no image preview for IcyHider's hider to work on, so the wrapper is cosmetic. It's the pack's automatic clone of every core node; CLIPVisionEncode is the exact code underneath.
Install
ComfyUI Manager → "IcyHider" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider.git
Restart. No Python deps; the CLIP vision model is your own file in models/clip_vision. Node under IcyHider Comfy Core. Empty clip_vision input? You need a CLIPVisionLoader upstream - this node only encodes, it doesn't load.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_vision | CLIP_VISION | — | |
| image | IMAGE | — | |
| crop | COMBO | 2 options: center, none |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP_VISION_OUTPUT | CLIP_VISION_OUTPUT | — |