diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61f2dc9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/__pycache__/ diff --git a/README.md b/README.md index a3154e4..9638824 100644 --- a/README.md +++ b/README.md @@ -1 +1,12 @@ -# ComfyUI-SizeFromArray \ No newline at end of file +# ComfyUI-SizeFromArray + +![SizeFromArray Preview](example.png "SizeFromArray Preview") + +- Custom node for [ComfyUI](https://github.com/comfyanonymous/ComfyUI). +- Add node that outputs random pair of width and height from given array. + +## Installation +``` +cd /custom_nodes +git clone https://github.com/ITurchenko/ComfyUI-SizeFromArray.git +``` \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..d9ee164 --- /dev/null +++ b/__init__.py @@ -0,0 +1,9 @@ +from .nodes.random import * + +NODE_CLASS_MAPPINGS = { + "SizeFromArray": SizeFromArray, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "SizeFromArray": "Retrieve random pair of size from array", +} diff --git a/example.png b/example.png new file mode 100644 index 0000000..ddb79f4 Binary files /dev/null and b/example.png differ diff --git a/nodes/random.py b/nodes/random.py new file mode 100644 index 0000000..e334abd --- /dev/null +++ b/nodes/random.py @@ -0,0 +1,50 @@ +import csv +import os + +import numpy as np +import torch + +import folder_paths + +import comfy.model_management + +custom_nodes_dir = folder_paths.get_folder_paths("custom_nodes")[0] +presets_dir = os.path.join(custom_nodes_dir, "ComfyUI-SizeFromArray", "presets") + +class SizeFromArray: + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "sizes": ("STRING", {"default": "512,512\n512,768\n768,512\n", "multiline": True}), + "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), + }, + } + + RETURN_TYPES = ("INT","INT") + RETURN_NAMES = ("width","height") + FUNCTION = "get_size" + CATEGORY = "SizeFromArray" + DESCRIPTION = """ +Return random pair of width&height from given array + +For example the default values: +512,512 +512,768 +768,512 + +Would return random pair from 512x512, 512x768 or 768x512 +""" + + def get_size(self, sizes, seed): + random_gen = np.random.default_rng(seed) + + lines = [line for line in sizes.split('\n') if line] # Split the string into lines (except empty ones) + tuples_array = [ tuple(map(int, line.strip().split(','))) for line in lines] + + preset = random_gen.choice(tuples_array) + + return (preset[0], preset[1]) \ No newline at end of file