From b08c2b609adf6e3234e87af15cbd7c5cc8e639d2 Mon Sep 17 00:00:00 2001 From: Tropfchen <6117944+Tropfchen@users.noreply.github.com> Date: Sun, 3 Nov 2024 22:31:23 +0100 Subject: [PATCH] add fractional node --- __init__.py | 5 +-- js/quickNodes.js | 7 ++++- node.tar.gz | Bin 0 -> 42133 bytes nodes.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 4 +-- 5 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 node.tar.gz diff --git a/__init__.py b/__init__.py index c39b681..145d48b 100644 --- a/__init__.py +++ b/__init__.py @@ -1,10 +1,11 @@ -from .nodes import YARS, YARSAdv +from .nodes import YARS, YARSAdv, YARSAdvFrack -NODE_CLASS_MAPPINGS = {"YARS": YARS, "YARSAdv": YARSAdv} +NODE_CLASS_MAPPINGS = {"YARS": YARS, "YARSAdv": YARSAdv, "YARSAdvFrack": YARSAdvFrack} NODE_DISPLAY_NAME_MAPPINGS = { "YARS": "yaResolution Selector", "YARSAdv": "yaResolution Selector (Advanced)", + "YARSAdvFrack": "yaResolution Selector (Fractional)", } diff --git a/js/quickNodes.js b/js/quickNodes.js index 013faba..8f276a0 100644 --- a/js/quickNodes.js +++ b/js/quickNodes.js @@ -141,7 +141,11 @@ app.registerExtension({ name: "trop.YARS", async beforeRegisterNodeDef(nodeType, nodeData, app) { // add resolution printout - if (nodeData.name === "YARSAdv" || nodeData.name === "YARS") { + if ( + nodeData.name === "YARSAdvFrack" || + nodeData.name === "YARSAdv" || + nodeData.name === "YARS" + ) { const onExecuted = nodeType.prototype.onExecuted; nodeType.prototype.onExecuted = function (message) { const r = onExecuted?.apply?.(this, arguments); @@ -181,6 +185,7 @@ app.registerExtension({ const entries = [ { name: "yaResolution Selector", value: "YARS" }, { name: "Advanced yaResolution Selector", value: "YARSAdv" }, + { name: "Fractional yaResolution Selector", value: "YARSAdvFrack" }, ]; for (const entry of entries) { options.unshift({ diff --git a/node.tar.gz b/node.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..962fe24dc3562c8866d0fb835cde35ebbdc0db1a GIT binary patch literal 42133 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 b|F=n2kb!-#*ncE1h!7a>LyS$~fA0PV?PAGR literal 0 HcmV?d00001 diff --git a/nodes.py b/nodes.py index 5758e89..3c01fec 100644 --- a/nodes.py +++ b/nodes.py @@ -212,6 +212,84 @@ class YARSAdv: } +class YARSAdvFrack: + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + return { + "required": { + "base_resolution": ( + "INT", + { + "default": 512, + "min": 512, + "max": 8192, + "step": 128, + }, + ), + "width_ratio": ( + "FLOAT", + { + "default": 1, + "min": 0.1, + "max": 24, + "step": 0.01, + }, + ), + "height_ratio": ( + "FLOAT", + { + "default": 1, + "min": 0.1, + "max": 24, + "step": 0.01, + }, + ), + "overextend": ( + "BOOLEAN", + {"default": False, "label_on": "yes ", "label_off": "no "}, + ), + "constant_resolution": ( + "BOOLEAN", + {"default": False, "label_on": "yes ", "label_off": "no "}, + ), + }, + } + + RETURN_TYPES = ("INT", "INT") + RETURN_NAMES = ("width", "height") + FUNCTION = "calculate" + OUTPUT_NODE = False + CATEGORY = "utils" + + def calculate( + self, + base_resolution: int, + width_ratio: float, + height_ratio: float, + overextend: bool, + constant_resolution: bool, + ): + ratio: float = height_ratio / width_ratio + + if constant_resolution: + d = calculate_constant_constant_resolution(base_resolution, ratio) + else: + d = calculate_aspect_ratio(base_resolution, ratio, overextend) + + # return as dict with `ui` key to trigger onExecuted + return { + "ui": { + "width": [d.width], + "height": [d.height], + "ratio": [width_ratio / height_ratio], + }, + "result": (d.width, d.height), + } + + if __name__ == "__main__": import unittest diff --git a/pyproject.toml b/pyproject.toml index 47fa133..16f21da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [project] name = "comfyui-yaresolutionselector" description = "Freely adjust resolution and aspect ratio, maintain pixel count of StableDiffusion model, or hook it up to upscaling nodes to get that 5k 16:10 wallpaper in just few clicks." -version = "1.2.0" -license = "LICENSE" +version = "1.3.0" +license = {text = "GPL License"} [project.urls] Repository = "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector"