Spaces:
Running
Running
from torch import Tensor | |
import math | |
import folder_paths | |
from .control_plusplus import load_controlnetplusplus, PlusPlusType, PlusPlusInput, PlusPlusInputGroup, PlusPlusImageWrapper | |
from .utils import BIGMAX | |
class PlusPlusLoaderAdvanced: | |
def INPUT_TYPES(s): | |
return { | |
"required": { | |
"plus_input": ("PLUS_INPUT", ), | |
"name": (folder_paths.get_filename_list("controlnet"), ), | |
} | |
} | |
RETURN_TYPES = ("CONTROL_NET", "IMAGE",) | |
FUNCTION = "load_controlnet_plusplus" | |
CATEGORY = "Adv-ControlNet ππ π π /ControlNet++" | |
def load_controlnet_plusplus(self, plus_input: PlusPlusInputGroup, name: str): | |
controlnet_path = folder_paths.get_full_path("controlnet", name) | |
controlnet = load_controlnetplusplus(controlnet_path) | |
controlnet.verify_control_type(name, plus_input) | |
return (controlnet, PlusPlusImageWrapper(plus_input),) | |
class PlusPlusLoaderSingle: | |
def INPUT_TYPES(s): | |
return { | |
"required": { | |
"name": (folder_paths.get_filename_list("controlnet"), ), | |
"control_type": (PlusPlusType._LIST_WITH_NONE, {"default": PlusPlusType.NONE}, ), | |
} | |
} | |
RETURN_TYPES = ("CONTROL_NET",) | |
FUNCTION = "load_controlnet_plusplus" | |
CATEGORY = "Adv-ControlNet ππ π π /ControlNet++" | |
def load_controlnet_plusplus(self, name: str, control_type: str): | |
controlnet_path = folder_paths.get_full_path("controlnet", name) | |
controlnet = load_controlnetplusplus(controlnet_path) | |
controlnet.single_control_type = control_type | |
controlnet.verify_control_type(name) | |
return (controlnet,) | |
class PlusPlusInputNode: | |
def INPUT_TYPES(s): | |
return { | |
"required": { | |
"image": ("IMAGE",), | |
"control_type": (PlusPlusType._LIST,), | |
}, | |
"optional": { | |
"prev_plus_input": ("PLUS_INPUT",), | |
"autosize": ("ACNAUTOSIZE", {"padding": 0}), | |
#"strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": BIGMAX, "step": 0.01}), | |
} | |
} | |
RETURN_TYPES = ("PLUS_INPUT", ) | |
FUNCTION = "wrap_images" | |
CATEGORY = "Adv-ControlNet ππ π π /ControlNet++" | |
def wrap_images(self, image: Tensor, control_type: str, strength=1.0, prev_plus_input: PlusPlusInputGroup=None): | |
if prev_plus_input is None: | |
prev_plus_input = PlusPlusInputGroup() | |
prev_plus_input = prev_plus_input.clone() | |
if math.isclose(strength, 0.0): | |
strength = 0.0000001 | |
pp_input = PlusPlusInput(image, control_type, strength) | |
prev_plus_input.add(pp_input) | |
return (prev_plus_input,) | |