π FRED Image Saver v2
A real parameters input and unlimited LoRA info
- images
- GRID_IMAGE
- last_saved_path
- help
FRED_ImageSaver is good; this is the one you should probably be using. ImageSaver v2 keeps all the tokenized filenames and A1111-style metadata from the original, then fixes its three weak spots: a real parameters input you can override explicitly, loras_infos that accepts any number of LoRAs instead of a hard three, and proper multi-image list mapping for batches. If you're starting fresh with the FRED pack, go straight to this node.
What changed in v2
Parameters input with an explicit switch. v1 made you hand-type every field (steps, CFG, sampler, seed, model name...) into widgets. v2 keeps those widgets for convenience but adds an optional parameters STRING input - wire in a full A1111-style parameters block and flip use_parameters_input on, and that exact text is what gets embedded, overriding the widgets. This is the key to honest metadata: feed it the parameters output from FRED_ImageLoad (which extracts them from a source image), or build the string from your extractor nodes, and the saved file records what actually ran rather than what you remembered to type.
Unlimited LoRA info via loras_infos. The optional loras_infos STRING input accepts the compact LoRA list format that the FRED Auto LoRA loaders emit. No more capping out at three LoRA fields - stack ten and the metadata records all of them.
Multi-image list mapping. The saver properly handles when images is a batch/list and maps metadata per image, so grid runs save each entry with the right per-image info instead of one shared blob.
The rest is familiar
Same token system - %model_name, %seed, %date_dash, %lora_name_1, %width, %steps, %cfg, %img_count and friends in filename/path (with the counter appended for uniqueness, default path Fred_nodes/%date_dash/). Same embedding: A1111-style parameters text, workflow JSON (toggleable), ComfyUI version. Same grid mode with save_as_grid_if_multi, grid_column_max/grid_row_max, separate grid extension and quality. Same outputs: GRID_IMAGE and last_saved_path.
The defaults for the widget fields skew toward Flux (scale 1.4, guidance 2.2, steps 8, model name flux) - they're record-only values for metadata, not active sampling parameters, so they only matter if you're not overriding via parameters.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Poukpalaova/ComfyUI-FRED-Nodes_v2.git
Restart, or "ComfyUI FRED Nodes v2" from ComfyUI Manager. Same pack requirements as the v1 saver - nothing extra.
Gotchas
use_parameters_input is a strict switch: when on, the parameters input wins and widget values are ignored for embedding, so make sure the string you feed is complete or your metadata will be sparse. And positive/negative still exist as widgets; when you use a full parameters block, keep them in sync or the embedded text will disagree with the sidecar fields. If the whole thing feels like overkill, it is - until you hit the day you need to know exactly which LoRA stack made that one great image.
Inputs (34)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | images to save (list or batch). | |
| save_single_image | BOOLEAN | true | Save each input image as its own file. |
| filename | STRING | %lora_name_1_%lora_weight_1_%model_name_%date_dash | base filename (counter appended) |
| path | STRING | Fred_nodes/%date_dash/ | relative to Comfy output or absolute |
| time_format | STRING | %Y-%m-%d-%H%M%S | used by %datetime token |
| extension | COMBO | png | output file format for single images |
| optimize_png | BOOLEAN | false | optimize PNG (lossless, smaller files but slower) |
| lossless_webp | BOOLEAN | true | save WEBP in lossless mode (quality ignored) |
| quality_jpeg_or_webp | INT | 1001β100 | JPEG/WEBP quality (ignored if WEBP lossless) |
| save_workflow_as_json | BOOLEAN | false | write a sidecar JSON next to image |
| embed_workflow_in_png | BOOLEAN | true | embed workflow/prompt JSON into PNG metadata |
| save_as_grid_if_multi | BOOLEAN | false | Also save a single tiled grid image of all inputs. |
| grid_filename | STRING | %lora_name_1_%lora_weight_1_%date_dash_%model_name_grid%_img_count | filename prefix for the grid image |
| grid_path | STRING | Test/%model_name/Grid/%date_dash/ | save folder for the grid image |
| grid_column_max | INT | 5 | xsize (columns). |
| grid_row_max | INT | 2 | ysize (rows). |
| grid_extension | COMBO | png | output file format for the grid image |
| grid_quality_jpeg_or_webp | INT | 1001β100 | JPEG/WEBP quality for the grid image |
| positive | STRING | positive prompt (saved in metadata) note: will not come from parameters | |
| negative | STRING | negative prompt (saved in metadata) note: will not come from parameters | |
| use_parameters_input | BOOLEAN | false | If ON, 'parameters' overwrite following widgets if exist |
| width | INT | 10241β16384 | recorded in metadata (does not resize) |
| height | INT | 10241β16384 | recorded in metadata (does not resize) |
| scale | FLOAT | 1.400β100000 | record-only parameter |
| denoise | FLOAT | 0.600β1 | record-only parameter |
| guidance | FLOAT | 2.200β100 | record-only parameter (CFG/guidance) |
| clip_skip | INT | 1-24β24 | record-only parameter |
| steps | INT | 201β4096 | record-only parameter |
| seed_value | INT | 00β18446744073709550000 | record-only parameter (seed) |
| sampler_name | STRING | euler | record-only parameter (sampler name) |
| scheduler_name | STRING | simple | record-only parameter (scheduler name) |
| model_name | STRING | flux | record-only parameter (model name) |
| parametersopt | STRING | A1111 tail (Steps, Sampler, ...). When 'use_parameters_input' is ON, overrides individual fields | |
| loras_infosopt | STRING | name[:weight],name2[:weight2],... or name,weight,name2,weight2,...; \, for literal comma |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| GRID_IMAGE | IMAGE | β |
| last_saved_path | STRING | path to last saved image |
| help | STRING | help / usage tips |