Spaces:
Running
on
Zero
Running
on
Zero
import node_helpers | |
import comfy.utils | |
class CLIPTextEncodeFlux: | |
def INPUT_TYPES(s): | |
return {"required": { | |
"clip": ("CLIP", ), | |
"clip_l": ("STRING", {"multiline": True, "dynamicPrompts": True}), | |
"t5xxl": ("STRING", {"multiline": True, "dynamicPrompts": True}), | |
"guidance": ("FLOAT", {"default": 3.5, "min": 0.0, "max": 100.0, "step": 0.1}), | |
}} | |
RETURN_TYPES = ("CONDITIONING",) | |
FUNCTION = "encode" | |
CATEGORY = "advanced/conditioning/flux" | |
def encode(self, clip, clip_l, t5xxl, guidance): | |
tokens = clip.tokenize(clip_l) | |
tokens["t5xxl"] = clip.tokenize(t5xxl)["t5xxl"] | |
return (clip.encode_from_tokens_scheduled(tokens, add_dict={"guidance": guidance}), ) | |
class FluxGuidance: | |
def INPUT_TYPES(s): | |
return {"required": { | |
"conditioning": ("CONDITIONING", ), | |
"guidance": ("FLOAT", {"default": 3.5, "min": 0.0, "max": 100.0, "step": 0.1}), | |
}} | |
RETURN_TYPES = ("CONDITIONING",) | |
FUNCTION = "append" | |
CATEGORY = "advanced/conditioning/flux" | |
def append(self, conditioning, guidance): | |
c = node_helpers.conditioning_set_values(conditioning, {"guidance": guidance}) | |
return (c, ) | |
class FluxDisableGuidance: | |
def INPUT_TYPES(s): | |
return {"required": { | |
"conditioning": ("CONDITIONING", ), | |
}} | |
RETURN_TYPES = ("CONDITIONING",) | |
FUNCTION = "append" | |
CATEGORY = "advanced/conditioning/flux" | |
DESCRIPTION = "This node completely disables the guidance embed on Flux and Flux like models" | |
def append(self, conditioning): | |
c = node_helpers.conditioning_set_values(conditioning, {"guidance": None}) | |
return (c, ) | |
PREFERED_KONTEXT_RESOLUTIONS = [ | |
(672, 1568), | |
(688, 1504), | |
(720, 1456), | |
(752, 1392), | |
(800, 1328), | |
(832, 1248), | |
(880, 1184), | |
(944, 1104), | |
(1024, 1024), | |
(1104, 944), | |
(1184, 880), | |
(1248, 832), | |
(1328, 800), | |
(1392, 752), | |
(1456, 720), | |
(1504, 688), | |
(1568, 672), | |
] | |
class FluxKontextImageScale: | |
def INPUT_TYPES(s): | |
return {"required": {"image": ("IMAGE", ), | |
}, | |
} | |
RETURN_TYPES = ("IMAGE",) | |
FUNCTION = "scale" | |
CATEGORY = "advanced/conditioning/flux" | |
DESCRIPTION = "This node resizes the image to one that is more optimal for flux kontext." | |
def scale(self, image): | |
width = image.shape[2] | |
height = image.shape[1] | |
aspect_ratio = width / height | |
_, width, height = min((abs(aspect_ratio - w / h), w, h) for w, h in PREFERED_KONTEXT_RESOLUTIONS) | |
image = comfy.utils.common_upscale(image.movedim(-1, 1), width, height, "lanczos", "center").movedim(1, -1) | |
return (image, ) | |
NODE_CLASS_MAPPINGS = { | |
"CLIPTextEncodeFlux": CLIPTextEncodeFlux, | |
"FluxGuidance": FluxGuidance, | |
"FluxDisableGuidance": FluxDisableGuidance, | |
"FluxKontextImageScale": FluxKontextImageScale, | |
} | |