⭐ Star Icon Exporter
One generated square in, a whole icon set out — PNGs and .ico in one run
- images
- ico_path
- preview_batch
Every once in a while you generate something and think "that would make a perfect app icon." Then you remember what shipping an icon actually involves: a dozen differently-sized PNGs, a .ico file, maybe a rounded-corner mask, and a favicon. Star Icon Exporter does the whole boring pipeline on the canvas - you give it one image, it writes the whole size ladder to disk and hands you the path.
How it works
Feed it an images input (the first frame of the batch is used, per the tooltip) and a save_name. It resizes that base image with Lanczos down to every size in a preset pack - standard (16/32/48/128/256), windows, android, ios, or web_favicon - writes each as a PNG into a subfolder under ComfyUI's output dir, and packs a .ico containing the sizes. extra_sizes lets you append custom ones as a comma-separated list ("64,512"), and quantize_to_256 (on by default) converts to a 256-color palette to keep files small - useful, since a 1024px app icon as truecolor PNG is needlessly fat.
The shaping options are where it stops being a dumb resizer. shape does square, circle, or rounded; the tooltip spells out the behavior: square fills the background (with background_color, default #FFFFFF) while circle/rounded keep transparency. padding_percent insets the art, auto_trim snips transparent edges before shaping, and there's a proper stroke (outline) and shadow (offset + blur) if you want the icon to sit on a background rather than float. A preset subfolder keeps each platform's output separate, and naming_style (increment / underscore_increment / timestamp) stops you overwriting the same file on repeat runs.
Inputs that matter
images+save_name- the art and the base filename. Everything else is optional.preset+extra_sizes- the size ladder. Set the platform, add oddballs.shape- the difference between a raw square and something you'd actually ship.
Outputs
ico_path(STRING) - where the.icolanded. You can wire this into a text display node or an API flow to know the file location.preview_batch(IMAGE) - all generated sizes stacked as a batch, so you can eyeball them in a Preview node.preview_sizepicks which size is shown.
Installing
It's part of the StarNodes pack - install Starnodes via ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart and search star on the canvas. Pure Pillow under the hood - no models, no downloads.
Common issues
If your output folder is a mess, remember the subfolder default is Icons, plus a per-preset subfolder - check ComfyUI/output/Icons/. Icons with an alpha channel stay transparent only if you keep shape at circle/rounded (or none) - picking square fills that background color over your transparency, which surprises people the first time. And if your PNGs are unexpectedly heavy, quantize_to_256 was turned off; that's the setting that tames file size.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Image input (first image in batch will be used). | |
| save_name | STRING | icon | Base filename without extension. |
| quantize_to_256opt | BOOLEAN | true | Quantize to 256 colors for smaller files. |
| extra_sizesopt | STRING | Comma-separated extra sizes, e.g. 64,512 | |
| subfolderopt | STRING | Icons | Optional output subfolder under ComfyUI output. |
| shapeopt | COMBO | none | Apply icon shape. 'square' fills background, 'circle'/'rounded' keep transparent background. |
| rounded_radius_percentopt | INT | 200–50 | Corner radius as percent of icon size (for rounded). |
| background_coloropt | STRING | #FFFFFF | HEX color for square background (e.g. #000000). |
| padding_percentopt | INT | 00–40 | Uniform padding as percent of icon size. |
| auto_trimopt | BOOLEAN | true | Auto-trim transparent edges before shaping. |
| stroke_enabledopt | BOOLEAN | false | Draw an outline around the shape. |
| stroke_coloropt | STRING | #000000 | Outline color (HEX). |
| stroke_width_percentopt | INT | 60–20 | Outline width as percent of icon size. |
| shadow_enabledopt | BOOLEAN | false | Add a drop shadow behind the shape. |
| shadow_coloropt | STRING | #000000 | Shadow color (HEX). |
| shadow_offset_pxopt | INT | 2-20–20 | Shadow offset in pixels. |
| shadow_blur_pxopt | INT | 40–32 | Shadow blur radius in pixels. |
| presetopt | COMBO | standard | Preset size packs to include. |
| naming_styleopt | COMBO | increment | How to avoid overwriting existing files. |
| export_web_faviconsopt | BOOLEAN | false | Also export common web favicon PNG sizes. |
| preview_sizeopt | INT | 2568–1024 | Preview size to show in node (closest available will be chosen). |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| ico_path | STRING | — |
| preview_batch | IMAGE | — |