# random_resolution_selector.py import time import random class RandomResolutionSelector: last_seed = 0 # increment用 @classmethod def INPUT_TYPES(cls): return { "required": { "height": ("INT", {"default": 896, "min": 1}), "width": ("INT", {"default": 1152, "min": 1}), "random_toggle": ("BOOLEAN", {"default": True}), "seed": ("INT", {"default": 0, "min": 0}), "seed_behavior": ( ["fixed", "randomize", "increment"], { "default": "randomize", "label": "生成後の制御" } ) } } RETURN_TYPES = ("INT", "INT", "STRING",) RETURN_NAMES = ("width", "height", "display",) FUNCTION = "select" CATEGORY = "custom/resolution" def select(self, height, width, random_toggle, seed, seed_behavior): # シードの決定方法 if seed_behavior == "randomize": seed = random.randint(0, 1_000_000_000) elif seed_behavior == "increment": seed = RandomResolutionSelector.last_seed + 1 RandomResolutionSelector.last_seed = seed # fixed はそのまま seed を使用 if random_toggle: mode = seed % 3 if mode == 0: mode_name = "original" elif mode == 1: mode_name = "swapped" height, width = width, height else: mode_name = "square" size = int((height + width) / 2) height = width = size else: mode_name = "fixed" display_text = f"width: {width}, height: {height} (seed: {seed}, mode: {mode_name})" return (width, height, display_text) # ノード登録 NODE_CLASS_MAPPINGS = { "RandomResolutionSelector": RandomResolutionSelector } NODE_DISPLAY_NAME_MAPPINGS = { "RandomResolutionSelector": "Random Resolution Selector" }