3.3 KiB
3.3 KiB
Documentation
- Class name: FL_ImageCaptionSaver
- Category: 🏵️Fill Nodes
- Output node: False
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
FL_ImageCaptionSaver节点旨在将一批图像及其相应的说明文字保存到指定目录中,并提供文件命名和覆盖控制选项。它有助于组织和存储生成的图像及其文本描述,从而提高视觉内容的可访问性和管理效率。
Input types
Required
- images
- 需要保存的一批图像。这个输入对于确定将要存储的内容至关重要,直接影响创建的输出文件。
- Comfy dtype: IMAGE
- Python dtype: List[torch.Tensor]
- folder_name
- 用于保存图像和说明文字的文件夹名称。它作为输出的目标路径,影响已保存文件的组织方式。
- Comfy dtype: STRING
- Python dtype: str
- caption_text
- 要与每张图像一起保存的文本说明。这个输入为图像提供上下文或描述性信息,丰富了内容的价值。
- Comfy dtype: STRING
- Python dtype: str
- overwrite
- 一个布尔标志,指示是否应覆盖同名的现有文件。这影响节点如何处理文件命名冲突和存储管理。
- Comfy dtype: BOOLEAN
- Python dtype: bool
Output types
- string
- 一条确认消息,详细说明保存的图像和说明文字的数量以及存储它们的目录。它提供了操作成功的反馈。
- Comfy dtype: STRING
- Python dtype: str
Usage tips
- Infra type:
CPU - Common nodes: unknown
Source code
class FL_ImageCaptionSaver:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"images": ("IMAGE", {}),
"folder_name": ("STRING", {"default": "output_folder"}),
"caption_text": ("STRING", {"default": "Your caption here"}),
"overwrite": ("BOOLEAN", {"default": True}) # New overwrite toggle
}
}
RETURN_TYPES = ("STRING",)
FUNCTION = "save_images_with_captions"
CATEGORY = "🏵️Fill Nodes"
def save_images_with_captions(self, images, folder_name, caption_text, overwrite):
# Ensure output directory exists
os.makedirs(folder_name, exist_ok=True)
saved_files = []
for i, image_tensor in enumerate(images):
base_name = f"image_{i}"
image_file_name = f"{folder_name}/{base_name}.png"
text_file_name = f"{folder_name}/{base_name}.txt"
# Check if overwrite is disabled and file exists
if not overwrite:
counter = 1
while os.path.exists(image_file_name) or os.path.exists(text_file_name):
image_file_name = f"{folder_name}/{base_name}_{counter}.png"
text_file_name = f"{folder_name}/{base_name}_{counter}.txt"
counter += 1
# Convert tensor to image
image = Image.fromarray((image_tensor.numpy() * 255).astype('uint8'), 'RGB')
# Save image
image.save(image_file_name)
saved_files.append(image_file_name)
# Save text file
with open(text_file_name, "w") as text_file:
text_file.write(caption_text)
return (f"Saved {len(images)} images and captions in '{folder_name}'",)