Download SwarmBlending.py from Goodis/SwarmComfyCommon: direct link, hf CLI and curl.
- Browser
- Download file 1.54 kB
-
https://huggingface.co/Goodis/SwarmComfyCommon/resolve/main/SwarmBlending.py
- Command line
-
hf download hf://Goodis/SwarmComfyCommon/SwarmBlending.py
-
curl -L -o SwarmBlending.py https://huggingface.co/Goodis/SwarmComfyCommon/resolve/main/SwarmBlending.py
1.54 kB
| import torch | |
| class SwarmLatentBlendMasked: | |
| def INPUT_TYPES(s): | |
| return { | |
| "required": { | |
| "samples0": ("LATENT",), | |
| "samples1": ("LATENT",), | |
| "mask": ("MASK",), | |
| "blend_factor": ("FLOAT", { "default": 0.5, "min": 0, "max": 1, "step": 0.01, "tooltip": "The blend factor between the two samples. 0 means entirely use sample0, 1 means entirely sample1, 0.5 means 50/50 of each." }), | |
| } | |
| } | |
| RETURN_TYPES = ("LATENT",) | |
| FUNCTION = "blend" | |
| CATEGORY = "SwarmUI/images" | |
| DESCRIPTION = "Blends two latent images together within a masked region." | |
| def blend(self, samples0, samples1, blend_factor, mask): | |
| samples_out = samples0.copy() | |
| samples0 = samples0["samples"] | |
| samples1 = samples1["samples"] | |
| while mask.ndim < 4: | |
| mask = mask.unsqueeze(0) | |
| if samples0.shape != samples1.shape: | |
| samples1 = torch.nn.functional.interpolate(samples1, size=(samples0.shape[2], samples0.shape[3]), mode="bicubic") | |
| if samples0.shape != mask.shape: | |
| mask = torch.nn.functional.interpolate(mask, size=(samples0.shape[2], samples0.shape[3]), mode="bicubic") | |
| samples_blended = samples0 * (1 - mask * blend_factor) + samples1 * (mask * blend_factor) | |
| samples_out["samples"] = samples_blended | |
| return (samples_out,) | |
| NODE_CLASS_MAPPINGS = { | |
| "SwarmLatentBlendMasked": SwarmLatentBlendMasked, | |
| } | |