88 lines
3.0 KiB
Markdown
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,)
|
|
|
|
```
|