๐ฆ RS Save Image
Save Image, but with a caption that explains itself
- images
RSSaveImage is the pack's answer to a specific, familiar annoyance: you save a render, and six days later you have no idea which prompt, which model, or even which test it was. ComfyUI already bakes the full workflow into the PNG metadata, so the pipeline isn't lost - but a blob of JSON isn't readable at a glance. This node slaps a plain-text caption bar onto the image before it saves, so the file explains itself: render on top, a neat footer underneath saying what it is.
ComfyUI's whole sharing culture runs on "workflow included" PNGs, and a visible caption is the difference between a shared image people can actually parse and one they have to drag back into ComfyUI to decode. It's a small quality-of-life upgrade, but if you post results or archive test batches, it's the kind of thing you stop noticing you live without.
How it works
Mechanically it's the native Save Image plus a Pillow footer. Your caption is text-wrapped to the image's width, centered vertically in a footer strip, and stitched below the image; then the PNG is saved with the prompt and workflow (extra_pnginfo) written into its metadata, exactly like the stock node. The footer only renders if you've actually typed text - leave it blank and this is just a normal save with a fancier name.
The input surface is small: images (IMAGE), plus a hidden node_data JSON string that carries the widget state - text, font_name, font_size, footer_height, theme, filename_prefix. It's an output node, so there are no outputs; the result lands in ComfyUI/output with an auto-incrementing counter, same as always.
The widgets that matter:
- Text - the caption. Empty = plain save.
- Theme -
light(white footer, black text) ordark(black footer, white text). - Font - pick from the pack's bundled font library, or drop
.ttf/.otffiles intoComfyUI/custom_nodes/ComfyUI_RaykoStudio/fontsand restart.font_sizedefaults to 50,footer_heightto 100. - filename_prefix - defaults to
ComfyUI.
Two honest caveats. First, this is an RGB save: if you feed it a transparent RGBA image, the footer assembly flattens it, so don't use it to save masked or transparent outputs. Second, keep the caption short - the text wraps, but a footer that turns into a paragraph is just noise on a 512px image.
Install
One repo for the whole pack. ComfyUI Manager โ search ComfyUI_RaykoStudio, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Raykosan/ComfyUI_RaykoStudio.git
Restart after. No model downloads; the requirements (torch, numpy, Pillow, opencv-python, freetype-py, pycairo, scipy) are mostly things already present in a working ComfyUI.
Common issues
- Caption not showing - you typed text but the footer only renders when
textis non-empty andfooter_heightis above 0. Both need to be set. - Custom font won't appear - it has to be in the pack's
fonts/folder (not ComfyUI's), and you have to restart ComfyUI for the list to refresh. - Saved image lost its transparency - expected behavior, not a bug. Use a plain Save node for RGBA work.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | โ | |
| node_data | STRING | {"text": "", "font_name": "Shadower.otf", "font_size": 50, "footer_height": 100, "theme": "light", "filename_prefix": "ComfyUI", "font_list": ["Shadower.otf", "Caveat.ttf", "Runic AltNo.ttf", "Boorsok.otf", "KJV 1611.otf", "arial bold.ttf", "Runic.ttf", "Oswald Bold.ttf", "impact.ttf", "Dushav 5.otf", "Trajan.ttf", "Alegreya Italic.ttf", "TD Mars.otf", "Roboto Regular.ttf", "Skiff Regular.otf", "arial bold italic.ttf", "Dela Gothic One Regular.ttf", "Constantine.ttf", "Fatboy.ttf", "Lombardina.ttf", "Equilibrist Bold.ttf", "Facon.otf", "Legend.ttf", "Yiggivoo Unicode Regular.ttf", "Equilibrist Regular.ttf", "arial italic.ttf", "AlGhazalia Arab.otf", "Balkara.ttf", "Arina.ttf", "RobotoSlab-Bold.ttf", "Blur Extended.ttf", "RobotoSlab-Regular.ttf", "Shumi.otf", "Allegretto Script One.ttf", "Blogger Sans-Medium Italic.otf", "ABITE.ttf", "AubreyPro.otf", "Amagro.ttf", "Keetano Katakana.ttf", "Bbroken Detroit.otf", "Cold Night for Alligators.otf", "Calvino Semibold Italic.ttf", "Calvino Semibold.ttf", "Tovar.otf", "PhonkSans Light Italic.otf", "Roboto-Black.ttf", "Tana Uncia.otf", "Roboto-Thin.ttf", "Ringbearer Cyrillic Medium.otf", "Zenter.otf", "Dance Partner.ttf", "AKONY.otf", "Project Space.otf", "comic.ttf", "PhonkSans Light.otf", "Arsenica Bold.ttf", "Foglihten.otf", "Martian Grotesk.otf", "Ghastly Panic.otf", "Blogger Sans-Medium.otf", "arial.ttf", "Rusticus.otf"]} | โ |
Outputs (0)
No outputs