Extensions/comfyui-EncryptSave
ComfyUI Extension

comfyui-EncryptSave

comfyui image encrypt and save.

By chou18194766xx·Created about a year ago·Updated 19 days ago· 6
chou18194766xx/comfyui-EncryptSave
Nodes1
On cloudLocal install
Categoryimage/save
Stars6
Updated19 days ago
Readme

ComfyUI Encrypt Save

0.1.0:已实现并完成 Windows 本地验证。 提供独立的 Encrypt Save Image 节点,像内置 SaveImage 一样接收图片和文件名前缀,将完整 PNG(含工作流元数据)保存为 .png.enc。

使用无密码 XOR 混淆,文件自带还原参数,不需要密钥或联网;这不提供密码学保密。面向用户的一键还原工具后续单独开发,当前安装包不包含该工具。 现在保存的文件采用已固定的 CESV v1 格式。

下载安装 ZIP · 版本说明。

安装

  1. 解压 comfyui-encrypt-save-0.1.0.zip,将其中的 comfyui-encrypt-save 文件夹放到 ComfyUI/custom_nodes/。
  2. 确认入口是 ComfyUI/custom_nodes/comfyui-encrypt-save/__init__.py,避免重复套一层同名目录。
  3. 重启 ComfyUI 并刷新网页,搜索 Encrypt Save Image,或在 image/save 分类中添加。

也可以在 ComfyUI 目录中通过 Git 安装:

git clone https://github.com/chou18194766xx/comfyui-EncryptSave.git custom_nodes/comfyui-encrypt-save

已有旧仓库安装时,在其原目录执行 git pull 更新。ZIP 升级时先将旧副本移出 custom_nodes,再放入新目录。旧工作流中的 EncryptSaveAES(Encrypt and Save (AES))需要替换为本版的 EncryptSaveImage;本版不读取旧 AES 文件。

使用 ComfyUI 已有的 PyTorch、NumPy 和 Pillow,无需安装 Crypto 等密码学库。如环境缺少 NumPy 或 Pillow,在 ComfyUI 使用的 Python 环境中安装本目录的 requirements.txt。

保存插件和 ComfyUI Encrypt Preview 分别安装、分别打包,互不依赖。

使用

将 IMAGE 接到 images,填写 filename_prefix 后执行。默认在 ComfyUI 配置的输出目录生成 ComfyUI_00001_.png.enc。节点显示保存数量、相对路径和下载链接;长列表可以在节点内滚动。点击“下载”获得原始 .png.enc 文件。

支持中文子目录、流水号、原生日期和节点变量。例如:

作品/%date:yyyy-MM-dd%/ComfyUI_%width%x%height%_%batch_num%

%batch_num% 从 0 开始。直接调用 ComfyUI API 时,日期和节点变量等前端模板需要由调用方先展开。

图片按原生规则量化为 8 位 PNG,保留分辨率与 RGBA 透明通道,压缩级别为 4。prompt、workflow 等元数据随整个 PNG 一起混淆;启动 ComfyUI 时使用 --disable-metadata,本节点也不写入这些元数据。无损还原指恢复生成的 PNG 字节,不是恢复输入张量的全部浮点精度。

节点的 images 输出直接传递原输入,可以继续连接其他节点。需要预览时,可以把同一图片分别接到保存、预览节点,也可以把保存节点输出接到独立的 Encrypt Preview Image。

保存遵守 ComfyUI 执行缓存:相同工作流命中缓存时展示已有文件,不重复落盘。需要再次保存时可修改前缀;仅修改前缀会复用上游图片。每次实际保存分配新流水号,不覆盖旧文件。

失败与资源边界

逐张编码与写入。插件创建的 .part 临时文件也只含混淆数据,不先写明文 PNG。发布前刷新文件,完整写入后才显示下载入口。

  • 某张失败或用户取消:保留已经完成的文件,停止后续保存,向 ComfyUI 报错并清理未发布的临时文件。
  • 磁盘满、权限不足、短写和重名竞争:不会用半成品覆盖已有文件;临时文件清理失败会报告警告。
  • 下载文件已被移动或删除:显示文件不存在,不假报下载成功。
  • 单张最多 67,108,864 像素,PNG 最多 512 MiB,每批元数据最多 16 MiB;不设固定批次数上限。

额外图像缓冲区按单张释放;ComfyUI 上游批量 IMAGE 张量本身仍占用内存。进程意外终止可能留下 .part,它们不会被当作完成文件,也不会自动扫描删除。

已验证范围

验证环境:Windows 10、Python 3.12.3、ComfyUI 0.35.0、前端 1.51.10、PyTorch 2.8.0 CPU、NumPy 2.5.2、Pillow 11.3.0。

  • 18 项 Python 测试、6 项 JavaScript 测试通过,覆盖格式、独立还原、输入校验、写入故障、并发重名、取消和前端状态。
  • 真实 ComfyUI 验证了独立安装、两个插件同时启用、缓存、中文路径、元数据开关、灰度/RGB/RGBA、下载、100 张批次,以及 8192×8192 灰度图片。
  • 传统画布和 Nodes 2.0 的文件列表、历史恢复、下载均已检查;Nodes 2.0 的 100 条结果保持在固定滚动区域内,末尾文件实际下载完成。

同一 CPU、同一磁盘、同样的 100 张 1024×1024 RGB 输入,保存节点单次实测如下:

| 项目 | 本插件 | 内置 SaveImage | | --- | ---: | ---: | | 整批节点耗时 | 9.14 秒 | 8.42 秒 | | 本节点首张发布 | 103 毫秒 | 未单独采集 | | 节点期间观测到的 RSS 增量 | 16.8 MiB | 30.8 MiB |

测试机器为 Ryzen 7 2700X、约 32 GiB 内存;输入为 Kodak 照片的四种平移变体。这是一次 CPU 本地测试,不是所有图片和磁盘的速度或内存保证。每个文件比其内部 PNG 固定增加 48 字节。

Linux 尚未实际验证:本机 WSL 因缺少虚拟化组件无法启动;硬链接发布路径仅在 Windows 上做了故障测试。网络盘和掉电恢复未验证。前缀模板适配复用了前端内部 applyTextReplacements,其他前端版本仍需验证;helper 不可用时,模板展开会明确报错。

源码与协议

完整行为、CESV v1 文件头和后续客户端契约见 DESIGN.md。固定的完整文件样例见 format-example.json。新格式不读取旧项目的 AES 或像素打乱文件。

仓库中的 tests/README.md 提供测试说明,tests/fixtures/cesv-v1.json 包含灰度/RGB/RGBA 固定向量。原始集成与界面结果留存在本地开发工作区的 test-results/,不随仓库发布。安装 ZIP 只包含运行文件、用户文档和许可证,不含测试节点、测试结果或测试环境。