ComfyUI自定义图片导出路径
代码:direct_save_image.py
将direct_save_image.py放到custom_node文件夹下。
import os
import torch
import numpy as np
from PIL import Image
import folder_paths
import json
from PIL.PngImagePlugin import PngInfo
import timeclass DirectSaveImage:def __init__(self):self.output_dir = folder_paths.get_output_directory()self.type = "output"self.prefix_append = ""self.compress_level = 4@classmethoddef INPUT_TYPES(s):return {"required": {"images": ("IMAGE", {"tooltip": "The images to save."}),"filename_prefix": ("STRING", {"default": "ComfyUI", "tooltip": "The prefix for the file to save."}),"output_path": ("STRING", {"default": "", "multiline": False,"tooltip": "Custom output directory path. Examples:\nD:/MyImages\nE:/AI_Output\nC:/Users/YourName/Documents/ComfyUI_Results\n\nLeave empty to use default ComfyUI output folder."}),"use_custom_path": ("BOOLEAN", {"default": False, "tooltip": "Enable custom output path"})},"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},}RETURN_TYPES = ()FUNCTION = "save_images"OUTPUT_NODE = TrueCATEGORY = "image"DESCRIPTION = "Direct Save Image with custom path support"def save_images(self, images, filename_prefix="ComfyUI", output_path="", use_custom_path=False, prompt=None, extra_pnginfo=None):# 决定保存目录if use_custom_path and output_path and output_path.strip():# 使用自定义路径output_path = output_path.strip().replace('\\', '/').rstrip('/')try:os.makedirs(output_path, exist_ok=True)save_dir = output_pathexcept Exception as e:print(f"Warning: Could not create directory {output_path}, using default: {e}")save_dir = self.output_direlse:# 使用默认路径save_dir = self.output_dirfilename_prefix += self.prefix_append# 生成文件名timestamp = int(time.time())counter = 0results = list()for (batch_number, image) in enumerate(images):i = 255. * image.cpu().numpy()img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8))# 准备元数据metadata = PngInfo()if prompt is not None:metadata.add_text("prompt", json.dumps(prompt))if extra_pnginfo is not None:for x in extra_pnginfo:metadata.add_text(x, json.dumps(extra_pnginfo[x]))# 生成文件名file = f"{filename_prefix}_{timestamp}_{counter:05}_.png"file_path = os.path.join(save_dir, file)# 直接保存到目标位置try:img.save(file_path, compress_level=self.compress_level, pnginfo=metadata)print(f"Saved image to: {file_path}")results.append({"filename": file,"subfolder": "","type": self.type})except Exception as e:print(f"Error saving image to {file_path}: {e}")counter += 1return { "ui": { "images": results } }# 注册节点
NODE_CLASS_MAPPINGS = {"DirectSaveImage": DirectSaveImage
}NODE_DISPLAY_NAME_MAPPINGS = {"DirectSaveImage": "Save Image (Direct)"
}
使用方法:
在comfyui界面中搜索Save Image(Direct)节点
use_custom_path为true时,使用自定义导出路径
use_custom_path为false时,使用默认导出路径
sou