From ce7a01222d79052bb704b5a3728ab391fef7fd86 Mon Sep 17 00:00:00 2001 From: Igor Turchenko Date: Thu, 9 May 2024 17:31:36 +0300 Subject: [PATCH] initial commit --- .gitignore | 1 + README.md | 13 ++++++++++++- __init__.py | 9 +++++++++ example.png | Bin 0 -> 41932 bytes nodes/random.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 example.png create mode 100644 nodes/random.py 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 0000000000000000000000000000000000000000..ddb79f4cebe221badb0871c71049e3c7fcc97406 GIT binary patch literal 41932 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

LHLxtHP2yrR_RR5hiJQX=4U=Xi8SRE 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

-xUGMAT`a?TBYwZ)``PIRd;x8IzQQHcL{c+ zg}Gq1T`~5zPUry+Z*oT%C1yOJpy2`dETSYDQ_g@x+Q&a1AhQ|cY>lct@ZTQKBpzj# zc;Az0Vv@w;Kh9w7^N>_urGG8?%^iAcZ4_pA%p`b^I6gJs$&vv$y!hR{vOut=Lqd>; z^RqEkXy~QM7vGtrLG_BdfEv_OiTTYp+e42A7XBElnu<`Z`C-hDLWy>-E1JBBF8eW5 zI!*BLQ!wXnV;OV)Vx3HmX7T;tRW4hxp11x#3t_8sTkX9d^8s+ToVfP^i-rGEp^jt$ z+Vs)*%ld{RF0O@v&x;q;^D&woG@LlG{vg!AHlTqP7wox{4>kUae3bNP-nHJ}J#MET z#C3;FcPaia2Q<F3Ahr1T c5wXwz+3gs$bB~3x>|p=`Pgg&ebxsLQ01|LOi~s-t literal 0 HcmV?d00001 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