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

88 lines
3.0 KiB
Markdown

# Documentation
- Class name: `ShuffleChannels`
- Category: `image/filters`
- Output node: `False`
ShuffleChannels节点旨在操作图像的颜色通道。它允许重新分配颜色通道,包括红色、绿色、蓝色,以及可选的alpha通道,将它们映射到不同的颜色值或常量值。这一功能可用于创造各种视觉效果或纠正图像中的颜色通道错位。
# Input types
## Required
- **`image`**
- 待处理的输入图像。该图像的颜色通道将根据指定的映射进行重排。
- Comfy dtype: `IMAGE`
- Python dtype: `torch.Tensor`
- **`red`**
- 指定输出图像中红色通道的映射。它可以映射到另一个颜色通道或设置为常量值。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `str`
- **`green`**
- 指定输出图像中绿色通道的映射。它可以映射到另一个颜色通道或设置为常量值。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `str`
- **`blue`**
- 指定输出图像中蓝色通道的映射。它可以映射到另一个颜色通道或设置为常量值。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `str`
- **`alpha`**
- 可选参数,指定输出图像中alpha(透明度)通道的映射。它可以映射到另一个通道,设置为常量值,或保持不变。
- Comfy dtype: `COMBO[STRING]`
- Python dtype: `str`
# Output types
- **`image`**
- 根据指定映射重排颜色通道后的输出图像。
- Comfy dtype: `IMAGE`
- Python dtype: `torch.Tensor`
## Usage tips
- Infra type: `GPU`
- Common nodes: unknown
## Source code
```python
class ShuffleChannels:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"image": ("IMAGE",),
"red": (Channel_List, {"default": "red"}),
"green": (Channel_List, {"default": "green"}),
"blue": (Channel_List, {"default": "blue"}),
"alpha": (Alpha_List, {"default": "none"}),
},
}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "shuffle"
CATEGORY = "image/filters"
def shuffle(self, image, red, green, blue, alpha):
ch = 3 if alpha == "none" else 4
t = torch.zeros((image.shape[0], image.shape[1], image.shape[2], ch), dtype=image.dtype, device=image.device)
image_copy = image.detach().clone()
ch_key = [red, green, blue, alpha]
for i in range(ch):
if ch_key[i] == "white":
t[:,:,:,i] = 1
elif ch_key[i] == "red":
t[:,:,:,i] = image_copy[:,:,:,0]
elif ch_key[i] == "green":
t[:,:,:,i] = image_copy[:,:,:,1]
elif ch_key[i] == "blue":
t[:,:,:,i] = image_copy[:,:,:,2]
elif ch_key[i] == "alpha":
if image.shape[3] > 3:
t[:,:,:,i] = image_copy[:,:,:,3]
else:
t[:,:,:,i] = 1
return(t,)
```