From de6d880d471dfc7ddc879246274e314e5e7b3cd6 Mon Sep 17 00:00:00 2001 From: chflame163 Date: Fri, 7 Nov 2025 23:03:52 +0800 Subject: [PATCH] commit DrawRoundedRectangle node --- py/draw_mask.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 py/draw_mask.py diff --git a/py/draw_mask.py b/py/draw_mask.py new file mode 100644 index 0000000..ab35da3 --- /dev/null +++ b/py/draw_mask.py @@ -0,0 +1,54 @@ +# layerstyle advance +import folder_paths +from .imagefunc import * + +any = AnyType("*") + +class LS_DrawRoundedRectangle: + + def __init__(self): + self.NODE_NAME = 'Draw Rounded Rectangle' + pass + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "size_as": (any, {}), + "rounded_rect_radius": ("INT", {"default": 50, "min": 0, "max": 100, "step": 1}), + "anti_aliasing": ("INT", {"default": 2, "min": 0, "max": 16, "step": 1}), + }, + "optional": { + } + } + + RETURN_TYPES = ("MASK",) + RETURN_NAMES = ("mask",) + FUNCTION = 'draw_rounded_rectangle' + CATEGORY = '😺dzNodes/LayerMask' + + def draw_rounded_rectangle(self, size_as, rounded_rect_radius, anti_aliasing): + + if size_as.shape[0] > 0: + _asimage = tensor2pil(size_as[0]) + else: + _asimage = tensor2pil(size_as) + target_width, target_height = _asimage.size + + ret_masks = [] + mask = Image.new("L", _asimage.size, color='black') + bboxes = [(0, 0, target_width, target_height)] + mask = draw_rounded_rectangle(mask, rounded_rect_radius, bboxes, anti_aliasing) + ret_masks.append(pil2tensor(mask)) + + log(f"{self.NODE_NAME} Processed {len(ret_masks)} mask(s).", message_type='finish') + return (torch.cat(ret_masks, dim=0),) + + +NODE_CLASS_MAPPINGS = { + "LayerMask: DrawRoundedRectangle": LS_DrawRoundedRectangle, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LayerMask: DrawRoundedRectangle": "LayerMask: DrawRoundedRectangle", +} \ No newline at end of file