| 481 | return (image1 * (1. - mask) + image2 * mask,) |
| 482 | |
| 483 | class MixColorByMask: |
| 484 | def __init__(self): |
| 485 | pass |
| 486 | |
| 487 | @classmethod |
| 488 | def INPUT_TYPES(cls): |
| 489 | return { |
| 490 | "required": { |
| 491 | "image": ("IMAGE",), |
| 492 | "r": ("INT", {"default": 0, "min": 0, "max": 255, "step": 1}), |
| 493 | "g": ("INT", {"default": 0, "min": 0, "max": 255, "step": 1}), |
| 494 | "b": ("INT", {"default": 0, "min": 0, "max": 255, "step": 1}), |
| 495 | "mask": ("IMAGE",), |
| 496 | }, |
| 497 | } |
| 498 | |
| 499 | RETURN_TYPES = ("IMAGE",) |
| 500 | FUNCTION = "mix" |
| 501 | |
| 502 | CATEGORY = "Masquerade Nodes" |
| 503 | |
| 504 | def mix(self, image, r, g, b, mask): |
| 505 | r, g, b = r / 255., g / 255., b / 255. |
| 506 | image_size = image.size() |
| 507 | image2 = torch.tensor([r, g, b]).to(device=image.device).unsqueeze(0).unsqueeze(0).unsqueeze(0).repeat(image_size[0], image_size[1], image_size[2], 1) |
| 508 | image, image2 = tensors2common(image, image2) |
| 509 | mask = tensor2batch(tensor2mask(mask), image.size()) |
| 510 | return (image * (1. - mask) + image2 * mask,) |
| 511 | |
| 512 | class CreateRectMask: |
| 513 | """ |
nothing calls this directly
no outgoing calls
no test coverage detected