Files
CavinHuang-comfyui-nodes-docs/docs/ImageDrawRectangleRounded.md
2024-07-04 08:39:03 +08:00

270 lines
8.3 KiB
Markdown

# Documentation
- Class name: `ImageDrawRectangleRounded`
- Category: `image/draw`
- Output node: `False`
ImageDrawRectangleRounded节点用于在图像上绘制圆角矩形。它允许对矩形的外观进行详细定制,包括大小、边框颜色、填充颜色和角半径,从而创建具有圆角的视觉吸引力图形。
# Input types
## Required
- **`width`**
- 绘制圆角矩形的画布宽度。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`height`**
- 绘制圆角矩形的画布高度。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`start_x`**
- 矩形起点的x坐标,定义矩形在x轴上的位置。
- Comfy dtype: `FLOAT`
- Python dtype: `int`
- **`start_y`**
- 矩形起点的y坐标,定义矩形在y轴上的位置。
- Comfy dtype: `FLOAT`
- Python dtype: `int`
- **`end_x`**
- 矩形终点的x坐标,决定矩形的宽度。
- Comfy dtype: `FLOAT`
- Python dtype: `int`
- **`end_y`**
- 矩形终点的y坐标,决定矩形的高度。
- Comfy dtype: `FLOAT`
- Python dtype: `int`
- **`radius`**
- 角的半径,指定圆角的程度。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`outline_size`**
- 矩形轮廓的粗细,用于自定义边框的外观。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`outline_red`**
- 轮廓颜色的红色分量,影响矩形边框的整体颜色。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`outline_green`**
- 轮廓颜色的绿色分量,影响矩形边框的整体颜色。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`outline_blue`**
- 轮廓颜色的蓝色分量,影响矩形边框的整体颜色。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`outline_alpha`**
- 轮廓的透明度值,用于调整边框的不透明度。
- Comfy dtype: `FLOAT`
- Python dtype: `float`
- **`fill_red`**
- 矩形填充颜色的红色分量,决定矩形内部的主要颜色。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`fill_green`**
- 矩形填充颜色的绿色分量,决定矩形内部的主要颜色。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`fill_blue`**
- 矩形填充颜色的蓝色分量,决定矩形内部的主要颜色。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`fill_alpha`**
- 填充的透明度值,用于调整矩形内部的不透明度。
- Comfy dtype: `FLOAT`
- Python dtype: `float`
- **`top_left_corner`**
- 指示左上角是否应为圆角的标志。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `bool`
- **`top_right_corner`**
- 指示右上角是否应为圆角的标志。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `bool`
- **`bottom_right_corner`**
- 指示右下角是否应为圆角的标志。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `bool`
- **`bottom_left_corner`**
- 指示左下角是否应为圆角的标志。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `bool`
- **`SSAA`**
- 超级采样抗锯齿因子,通过减少锯齿效应来提高绘图质量。
- Comfy dtype: `INT`
- Python dtype: `int`
- **`method`**
- 用于调整图像大小的方法,影响最终输出的质量。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `str`
# Output types
- **`image`**
- 带有绘制的圆角矩形的输出图像,展示了应用的自定义效果。
- Comfy dtype: `IMAGE`
- Python dtype: `numpy.ndarray`
## Usage tips
- Infra type: `GPU`
- Common nodes: unknown
## Source code
```python
class ImageDrawRectangleRounded:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"width": ("INT", {
"default": 256,
"min": 1,
"step": 1
}),
"height": ("INT", {
"default": 256,
"min": 1,
"step": 1
}),
"start_x": ("FLOAT", {
"default": 0.1,
"max": 1.0,
"step": 0.01
}),
"start_y": ("FLOAT", {
"default": 0.2,
"max": 1.0,
"step": 0.01
}),
"end_x": ("FLOAT", {
"default": 0.9,
"max": 1.0,
"step": 0.01
}),
"end_y": ("FLOAT", {
"default": 0.8,
"max": 1.0,
"step": 0.01
}),
"radius": ("INT", {
"default": 180,
"max": 360,
"step": 1
}),
"outline_size": ("INT", {
"default": 1,
"step": 1
}),
"outline_red": ("INT", {
"default": 0,
"max": 255,
"step": 1
}),
"outline_green": ("INT", {
"default": 0,
"max": 255,
"step": 1
}),
"outline_blue": ("INT", {
"default": 0,
"max": 255,
"step": 1
}),
"outline_alpha": ("FLOAT", {
"default": 1.0,
"max": 1.0,
"step": 0.01
}),
"fill_red": ("INT", {
"default": 255,
"max": 255,
"step": 1
}),
"fill_green": ("INT", {
"default": 255,
"max": 255,
"step": 1
}),
"fill_blue": ("INT", {
"default": 255,
"max": 255,
"step": 1
}),
"fill_alpha": ("FLOAT", {
"default": 1.0,
"max": 1.0,
"step": 0.01
}),
"top_left_corner": (["true", "false"],),
"top_right_corner": (["true", "false"],),
"bottom_right_corner": (["true", "false"],),
"bottom_left_corner": (["true", "false"],),
"SSAA": ("INT", {
"default": 4,
"min": 1,
"max": 16,
"step": 1
}),
"method": (["lanczos", "bicubic", "hamming", "bilinear", "box", "nearest"],),
},
}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "node"
CATEGORY = "image/draw"
# noinspection PyPep8Naming, PyUnresolvedReferences, PyArgumentList
def node(
self,
width,
height,
start_x,
start_y,
end_x,
end_y,
radius,
outline_size,
outline_red,
outline_green,
outline_blue,
outline_alpha,
fill_red,
fill_green,
fill_blue,
fill_alpha,
top_left_corner,
top_right_corner,
bottom_right_corner,
bottom_left_corner,
SSAA,
method
):
canvas = Image.new("RGBA", (width * SSAA, height * SSAA), (0, 0, 0, 0))
draw = ImageDraw.Draw(canvas)
draw.rounded_rectangle(
(
(width * start_x * SSAA, height * start_y * SSAA),
(width * end_x * SSAA, height * end_y * SSAA)
),
radius * SSAA,
(fill_red, fill_green, fill_blue, int(fill_alpha * 255)),
(outline_red, outline_green, outline_blue, int(outline_alpha * 255)),
outline_size * SSAA,
corners=(
True if top_left_corner == "true" else False,
True if top_right_corner == "true" else False,
True if bottom_right_corner == "true" else False,
True if bottom_left_corner == "true" else False
)
)
canvas = canvas.resize((width, height), get_sampler_by_name(method))
return (canvas.image_to_tensor().unsqueeze(0),)
```