Files
fudosanit-ComfyUI-Random-Re…/random_resolution_selector.py
2025-12-10 15:57:07 +09:00

66 lines
2.0 KiB
Python

# 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"
}