167 lines
4.9 KiB
Markdown
167 lines
4.9 KiB
Markdown
|
|
# Documentation
|
|
- Class name: ImageEffectsAdjustment
|
|
- Category: image/effects
|
|
- Output node: False
|
|
|
|
ImageEffectsAdjustment节点对一批图像应用一系列图像调整,包括亮度、对比度、饱和度、色相、伽马值和锐度,以及RGB颜色缩放。它允许对图像的视觉方面进行微调,以实现所需的效果或修正。
|
|
|
|
# Input types
|
|
## Required
|
|
- images
|
|
- 需要调整的图像批次。每项调整都会应用于批次中的所有图像,从而实现对多个输入的一致图像处理。
|
|
- Comfy dtype: IMAGE
|
|
- Python dtype: torch.Tensor
|
|
- brightness
|
|
- 调整图像的亮度水平。大于1.0的值会增加亮度,而小于1.0的值会降低亮度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- contrast
|
|
- 修改图像的对比度。大于1.0的值会增强对比度,而小于1.0的值会降低对比度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- saturation
|
|
- 改变图像的饱和度水平,增强或减弱颜色的强度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- hue
|
|
- 改变图像的色相,允许在色谱上进行偏移。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- gamma
|
|
- 对图像应用伽马校正,调整亮度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- sharpness
|
|
- 调整图像的锐度,使其看起来更清晰或更柔和。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- red
|
|
- 缩放图像的红色通道,影响红色色调的强度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- green
|
|
- 缩放图像的绿色通道,影响绿色色调的强度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- blue
|
|
- 缩放图像的蓝色通道,影响蓝色色调的强度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
|
|
# Output types
|
|
- image
|
|
- 应用指定调整后的图像批次,可能包括亮度、对比度、饱和度、色相、伽马值、锐度和RGB颜色缩放的变化。
|
|
- Comfy dtype: IMAGE
|
|
- Python dtype: torch.Tensor
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `GPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class ImageEffectsAdjustment:
|
|
def __init__(self):
|
|
pass
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"images": ("IMAGE",),
|
|
"brightness": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"contrast": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"saturation": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"hue": ("FLOAT", {
|
|
"default": 0.5,
|
|
"max": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"gamma": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"sharpness": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"red": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"green": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
"blue": ("FLOAT", {
|
|
"default": 1.0,
|
|
"step": 0.01
|
|
}),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("IMAGE",)
|
|
FUNCTION = "node"
|
|
CATEGORY = "image/effects"
|
|
|
|
def node(self, images, brightness, contrast, saturation, hue, gamma, sharpness, red, green, blue):
|
|
# noinspection PyUnboundLocalVariable
|
|
def apply(img):
|
|
rgba = False
|
|
|
|
if len(img[0, 0, :]) == 4:
|
|
a = img[:, :, 3].unsqueeze(2)
|
|
img = img[:, :, 0:3]
|
|
rgba = True
|
|
|
|
img = img.permute(2, 0, 1)
|
|
|
|
if brightness != 1.0:
|
|
img = F.adjust_brightness(img, brightness)
|
|
|
|
if contrast != 1.0:
|
|
img = F.adjust_contrast(img, contrast)
|
|
|
|
if saturation != 1.0:
|
|
img = F.adjust_saturation(img, saturation)
|
|
|
|
if hue != 0.5:
|
|
img = F.adjust_hue(img, hue - 0.5)
|
|
|
|
if gamma != 1.0:
|
|
img = F.adjust_gamma(img, gamma)
|
|
|
|
if sharpness != 1.0:
|
|
img = F.adjust_sharpness(img, sharpness)
|
|
|
|
img = img.permute(1, 2, 0)
|
|
|
|
r, g, b = torch.chunk(img, 3, dim=2)
|
|
|
|
r = torch.clamp(r * red, 0, 1)
|
|
g = torch.clamp(g * green, 0, 1)
|
|
b = torch.clamp(b * blue, 0, 1)
|
|
|
|
if rgba:
|
|
return torch.cat([r, g, b, a], dim=2)
|
|
else:
|
|
return torch.cat([r, g, b], dim=2)
|
|
|
|
return (torch.stack([
|
|
apply(images[i]) for i in range(len(images))
|
|
]),)
|
|
|
|
```
|