4.4 KiB
4.4 KiB
Documentation
- Class name: NewLayer
- Category: ♾️Mixlab/Layer
- Output node: False
- Repo Ref: https://github.com/shadowcz007/comfyui-mixlab-nodes.git
NewLayer节点旨在根据特定的位置和缩放属性操作和组合图像层。它允许创建一个分层结构,其中每个层可以单独定位并根据提供的参数进行缩放。节点的功能集中在通过精确控制它们的外观和排列,增强视觉展示,从而实现多个图像的叠加。
Input types
Required
- x
- 参数'x'指定了画布内层的水平位置。它至关重要,因为它决定了层从画布左侧的确切放置位置,影响整体构图。
- Comfy dtype: INT
- Python dtype: int
- y
- 参数'y'定义了画布内层的垂直位置。它是决定层从画布顶部如何对齐的关键因素,影响最终的视觉效果。
- Comfy dtype: INT
- Python dtype: int
- width
- 参数'width'设置层的宽度。它在层的缩放中起着重要作用,允许控制视觉内容的水平尺寸。
- Comfy dtype: INT
- Python dtype: int
- height
- 参数'height'决定了层的垂直尺寸。它对于控制层在垂直轴上的缩放至关重要,影响层的视觉突出程度。
- Comfy dtype: INT
- Python dtype: int
- z_index
- 参数'z_index'建立层相对于其他层的堆叠顺序。值越高,表示该层将放置在其他层的前面,这对于管理层的可见性和深度至关重要。
- Comfy dtype: INT
- Python dtype: int
- scale_option
- 参数'scale_option'决定如何缩放层。它对于保持纵横比或均匀调整层的大小很重要,这可以显著改变视觉输出。
- Comfy dtype: COMBO['width', 'height', 'overall']
- Python dtype: str
- image
- 参数'image'是层的视觉内容来源。它是基本的,因为它提供了将在画布内操作和显示的实际像素。
- Comfy dtype: IMAGE
- Python dtype: PIL.Image.Image
- mask
- 可选参数'mask'可以用来定义图像中应该可见或被修改的特定区域。它为图像操作过程增加了复杂性,允许对最终输出进行创造性控制。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- layers
- 可选参数'layers'允许将额外的现有层包含到组合中。这对于在现有视觉结构上构建或整合多个视觉元素非常有用。
- Comfy dtype: LAYER
- Python dtype: List[Dict[str, Union[int, str, torch.Tensor, PIL.Image.Image]]]
- canvas
- 可选参数'canvas'提供了一个基础图像,层将被放置在该图像上。它对于设置新层将被整合的初始视觉环境很重要。
- Comfy dtype: IMAGE
- Python dtype: PIL.Image.Image
Output types
- layers
- 输出'layers'是代表视觉元素最终组合的层对象集合。它封装了节点操作的结果,详细说明了分层图像的结构和外观。
- Comfy dtype: LAYER
- Python dtype: Tuple[List[Dict[str, Union[int, str, torch.Tensor, PIL.Image.Image]]], ...]
Usage tips
- Infra type: CPU
Source code
class NewLayer:
@classmethod
def INPUT_TYPES(s):
return {'required': {'x': ('INT', {'default': 0, 'min': -1024, 'max': 8192, 'step': 1, 'display': 'number'}), 'y': ('INT', {'default': 0, 'min': -1024, 'max': 8192, 'step': 1, 'display': 'number'}), 'width': ('INT', {'default': 512, 'min': 1, 'max': 8192, 'step': 1, 'display': 'number'}), 'height': ('INT', {'default': 512, 'min': 1, 'max': 8192, 'step': 1, 'display': 'number'}), 'z_index': ('INT', {'default': 0, 'min': 0, 'max': 100, 'step': 1, 'display': 'number'}), 'scale_option': (['width', 'height', 'overall'],), 'image': ('IMAGE',)}, 'optional': {'mask': ('MASK', {'default': None}), 'layers': ('LAYER', {'default': None}), 'canvas': ('IMAGE', {'default': None})}}
RETURN_TYPES = ('LAYER',)
RETURN_NAMES = ('layers',)
FUNCTION = 'run'
CATEGORY = '♾️Mixlab/Layer'
INPUT_IS_LIST = True
OUTPUT_IS_LIST = (True,)
def run(self, x, y, width, height, z_index, scale_option, image, mask=None, layers=None, canvas=None):
if mask == None:
im = tensor2pil(image[0])
mask = im.convert('L')
mask = pil2tensor(mask)
else:
mask = mask[0]
layer_n = [{'x': x[0], 'y': y[0], 'width': width[0], 'height': height[0], 'z_index': z_index[0], 'scale_option': scale_option[0], 'image': image[0], 'mask': mask}]
if layers != None:
layer_n = layer_n + layers
return (layer_n,)