Files
2024-08-31 17:39:41 +09:00

65 lines
2.2 KiB
Python

import math, cv2, random, torch, torchvision, json, os
import numpy as np
from PIL import Image, ImageOps, ImageSequence
import nodes, folder_paths # 기본노드, 파일로드
class abyz22_SaveImage:
def __init__(self):
self.output_dir = folder_paths.get_output_directory()
self.type = "output"
self.prefix_append = ""
self.compress_level = 4
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"images": ("IMAGE",),
"folder_path": ("STRING", {"default": ""}),
},
"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},
}
RETURN_TYPES = ()
FUNCTION = "save_images"
OUTPUT_NODE = True
CATEGORY = "abyz22"
def save_images(self, images, folder_path, filename_prefix="ComfyUI", prompt=None, extra_pnginfo=None):
filename_prefix += self.prefix_append
_, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(
filename_prefix, self.output_dir, images[0].shape[1], images[0].shape[0]
)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
full_output_folder = folder_path
file_list = os.listdir(folder_path)
file_list = [f for f in file_list if ".png" in f]
file_list = [int(f.split(".")[0].split("-")[1]) for f in file_list]
file_list.sort(reverse=True)
counter = 1 if len(file_list) == 0 else file_list[0] + 1
file_list = os.listdir(folder_path)
for file in file_list:
if ".zip" in file:
counter = 1
results = list()
for image in images:
i = 255.0 * image.cpu().numpy()
img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8))
if folder_path != "no-data":
folder_num = folder_path.rsplit("/", 1)[1]
file = f"{folder_num}-{counter}.png"
img.save(os.path.join(full_output_folder, file), pnginfo=None, compress_level=self.compress_level)
results.append({"filename": file, "subfolder": subfolder, "type": self.type})
counter += 1
return {"ui": {"images": results}}