ComfyUI-Image-Saver

ComfyUI-Image-Saver
★ 164

图像保存元数据Civitai兼容资源识别
将生成的图像保存为png/jpeg/webp,并记录兼容Civitai的生成元数据及LoRA、模型、Embedding哈希,便于资源识别与复现。
💡 在流水线中保存生成图像并记录模型与LoRA哈希以便追溯。
🍴 31 Forks💻 Python🔄 2026-02-25
📦
网盘下载
复制链接后前往夸克网盘下载
https://pan.quark.cn/s/2df45d172dc1
📦 requirements.txt
piexif
workflow
image
📄 README

[!] Forked from https://github.com/giriss/comfy-image-saver, which seems to be inactive since a while.

Save image with generation metadata in ComfyUI

Allows you to save images with their generation metadata. Includes the metadata compatible with *Civitai* geninfo auto-detection. Works with PNG, JPG and WEBP. For PNG stores both the full workflow in comfy format, plus a1111-style parameters. For JPEG/WEBP only the a1111-style parameters are stored. Includes hashes of Models, LoRAs and embeddings for proper resource linking on civitai.

You can find the example workflow file named example-workflow.json.

You can also add LoRAs to the prompt in \ format, which would be translated into hashes and stored together with the metadata. For this it is recommended to use ImpactWildcardEncode from the fantastic ComfyUI-Impact-Pack. It will allow you to convert the LoRAs directly to proper conditioning without having to worry about avoiding/concatenating lora strings, which have no effect in standard conditioning nodes. Here is an example:

This would have civitai autodetect all of the resources (assuming the model/lora/embedding hashes match):

How to install?

Method 1: Manager (Recommended)

If you have *ComfyUI-Manager*, you can simply search “ComfyUI Image Saver” and install these custom nodes.

Method 2: Easy

If you don’t have *ComfyUI-Manager*, then:

  • Using CLI, go to the ComfyUI folder
  • cd custom_nodes
  • git clone git@github.com:alexopus/ComfyUI-Image-Saver.git
  • cd ComfyUI-Image-Saver
  • pip install -r requirements.txt
  • Start/restart ComfyUI
  • Customization of file/folder names

    You can use following placeholders:

  • %date
  • %time *– format taken from time_format*
  • %time_format *– custom datetime format using Python strftime codes*
  • %model *– full name of model file*
  • %basemodelname *– name of model (without file extension)*
  • %seed
  • %counter
  • %sampler_name
  • %scheduler
  • %steps
  • %cfg
  • %denoise
  • Example:

    | filename value | Result file name |

    | — | — |

    | %time-%basemodelname-%cfg-%steps-%sampler_name-%scheduler-%seed | 2023-11-16-131331-Anything-v4.5-pruned-mergedVae-7.0-25-dpm_2-normal-1_01.png |

    | %time_format<%Y%m%d_%H%M%S>-%seed | 20231116_131331-1.png |

    | %time_format<%B %d, %Y> %basemodelname | November 16, 2023 Anything-v4.5.png |

    | img_%time_format<%Y-%m-%d>_%seed | img_2023-11-16_1.png |

    Common strftime format codes for %time_format:

    | Code | Meaning | Example |

    |——|———|———|

    | %Y | Year (4-digit) | 2023 |

    | %y | Year (2-digit) | 23 |

    | %m | Month (01-12) | 11 |

    | %B | Month name (full) | November |

    | %b | Month name (short) | Nov |

    | %d | Day (01-31) | 16 |

    | %H | Hour 24h | 13 |

    | %I | Hour 12h | 01 |

    | %M | Minute | 13 |

    | %S | Second | 31 |

    | %p | AM/PM | PM |

    | %A | Weekday (full) | Thursday |

    | %a | Weekday (short) | Thu |

    | %F | YYYY-MM-DD | 2023-11-16 |

    | %T | HH:MM:SS | 13:13:31 |