Nodes/ComfyUI-IcyHider/Icy CLIPVisionEncode
ComfyUI Node

Icy CLIPVisionEncode

The image reader — CLIPVisionEncode turns a reference picture into usable features

By icekiub-ai·Created 9 months ago·Updated 9 months ago· 31
Icy CLIPVisionEncode
  • clip_vision
  • image
  • CLIP_VISION_OUTPUT
crop

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 a CLIPVisionLoader. 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 with LoadImage (or pull it from anywhere upstream).
  • crop - center or none. Center-cropping makes the reference square before encoding, which matches what the vision model expects; none skips the crop and can produce slightly different (sometimes better, sometimes weirder) features for non-square images. Default is center, 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.

CategoryIcyHider Comfy Core

Inputs (3)

NameTypeDefaultDescription
clip_visionCLIP_VISION
imageIMAGE
cropCOMBO2 options: center, none

Outputs (1)

NameTypeDescription
CLIP_VISION_OUTPUTCLIP_VISION_OUTPUT