保存图像🐠meeeyo.com
Save images to any folder you want — and get the image back out
- image
- image
SaveImagEX is ComfyUI's Save Image node with two upgrades that matter: you get to pick the output folder, and it passes the image tensor back out instead of swallowing it. It's part of MeeeyoAI/ComfyUI_StringOps, added in the pack's 2025-06-05 update specifically to "save images to a specified directory (also added an image output port)."
The folder freedom is the real story. Core ComfyUI dumps everything into ComfyUI/output and you sort it out later. SaveImagEX lets you write straight to a dataset staging folder, a per-project directory, or anywhere on disk - which changes how you work when you're batch-generating reference sheets, building training sets, or dumping previews into a folder another script watches.
The inputs
- image - the IMAGE tensor to save.
- save_path - where to write, default
./output(which maps to ComfyUI's standard output directory). A relative path is resolved inside the output folder; an absolute path is used as-is and created if missing. So./output/faceslands in your ComfyUI output, while/data/dataset/facesgoes wherever you said. - image_name - the base filename, default
ComfyUI. An extension is stripped and replaced, so typingComfyUI.pngorComfyUIboth work. Batches get a_00000-style numeric suffix per image. - image_format - PNG or JPG, defaulting to JPG.
The outputs
One: image, the same tensor that went in. Because the node is an output node that also returns the tensor, you can both save and keep wiring the image onward - a genuinely handy pattern if the same image feeds a preview and a downscale.
Where people get burned
The defaults write enormous files. PNG is saved with compress_level=0 - that's maximum speed, minimum compression, so PNGs come out as big as the format allows. JPG is saved at quality=100, which is also huge and pointless for most purposes. Neither is configurable. If you're dumping hundreds of images, this node will eat your disk unless you pick a format with real compression or save at quality you're willing to live with. And JPG forces RGB conversion, so any alpha channel in the image is silently dropped - feed RGBA to a JPG save and you lose transparency without a warning.
Also note this node writes to disk with no collision counter: two runs with the same image_name overwrite each other. That's why pairing it with GetCurrentTime (same pack) for timestamped filenames is such a common combo.
Installing
The pack install, same as everything here:
cd ComfyUI/custom_nodes
git clone https://github.com/MeeeyoAI/ComfyUI_StringOps.git
or via ComfyUI Manager searching ComfyUI_StringOps, then restart. Light dependencies - numpy, torch, Pillow - all already in a working ComfyUI.
It's a small quality-of-life node, and the disk-space behavior means it's not a free win. But "save to the folder I actually want, and hand the image back" is a workflow nicety you stop noticing - until it's gone.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| save_path | STRING | ./output | — |
| image_name | STRING | ComfyUI | — |
| image_format | COMBO | JPG | 2 options: PNG, JPG |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |