diff --git a/backend/src/packages/chaiNNer_standard/image_utility/compositing/mix.py b/backend/src/packages/chaiNNer_standard/image_utility/compositing/mix.py new file mode 100644 index 0000000000..c7051b23eb --- /dev/null +++ b/backend/src/packages/chaiNNer_standard/image_utility/compositing/mix.py @@ -0,0 +1,43 @@ +from __future__ import annotations + +import numpy as np + +from nodes.properties.inputs import ImageInput, SliderInput +from nodes.properties.outputs import ImageOutput + +from .. import compositing_group + + +@compositing_group.register( + schema_id="chainner:image:mix", + name="Mix", + description="Mixes 2 images together.", + icon="BsLayersHalf", + inputs=[ + ImageInput("Image A"), + ImageInput("Image B"), + SliderInput( + "Mix", + minimum=0.0, + maximum=1.0, + default=0.5, + precision=4, + controls_step=0.001, + scale="linear", + ), + ], + outputs=[ + ImageOutput( + image_type=""" + Image { + width: Input0.width & Input1.width, + height: Input0.height & Input1.height, + channels: max(Input0.channels, Input1.channels), + } + """, + ).with_never_reason("Both images must have the same size."), + ], +) +def mix_node(input1: np.ndarray, input2: np.ndarray, mix: float) -> np.ndarray: + mixed_image = (1 - mix) * input1 + mix * input2 + return mixed_image