💀Image Adjustment Color
Run image adjustments on a hex color instead of a picture
- adjusted_color_hex
Here's the odd one. 💀Image Adjustment in the S4Tool-Image pack adjusts an image's brightness, contrast, and saturation. 💀Image Adjustment Color takes those exact same controls and applies them to a hex color string, outputting another hex string. No image involved anywhere. It's a color-math utility hiding in an image pack, and it's the kind of node you don't need often but are glad exists when you do.
The mechanism is simple color-space arithmetic: the input hex is converted to RGB, brightness and contrast are applied in RGB space, saturation in HSV space, then it's converted back to a hex string. The color_hex and overlay_percent inputs work the same way as the image version - they mix a wash of color_hex into the result at the given percentage.
Inputs and output
input_color_hex- the color to adjust (default#FF0000).brightness,contrast,saturation- −100 to +100 sliders, default 0, same semantics as the image node.color_hex+overlay_percent- optional tint/overlay applied to the result.
Output: adjusted_color_hex (STRING). That's it - a new hex you can feed into any color string input: a background color widget, a gradient endpoint, a mask fill, or another palette node.
Where it earns its keep: building color variations programmatically. You extract a color from a reference (say, via 💀Image Primary Color), run a few of these in parallel to brighten and darken copies, and you've got a tonal family without ever touching an image editor. It's also handy in workflow templates where a color needs a "darkened version for the text" and a "lighter version for the panel" without hardcoding.
Install
Standard pack install:
cd ComfyUI/custom_nodes/
git clone https://github.com/S4MUEL-404/ComfyUI-S4Tool-Image.git
pip install -r ComfyUI-S4Tool-Image/requirements.txt
Or ComfyUI Manager → search "S4Tool-Image" → Install → restart. No models, no downloads.
Gotchas
- It outputs text, not an image - don't wire it into an IMAGE input and wonder why nothing happens.
- The sibling mix-up - if you meant to adjust a picture, use 💀Image Adjustment. This node only ever touches a color string.
- Contrast semantics on a single color - contrast on one hex value is a stretch/shrink around gray; the effect is subtler than on a full image, so don't expect dramatic shifts.
It's a niche tool with a tiny footprint, but for color-system automation it closes a gap: a color, adjusted, as data - not as pixels.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| input_color_hex | STRING | #FF0000 | — |
| brightness | INT | 0-100–100 | — |
| contrast | INT | 0-100–100 | — |
| saturation | INT | 0-100–100 | — |
| color_hex | STRING | #FFFFFF | — |
| overlay_percent | INT | 00–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| adjusted_color_hex | STRING | — |