Compare commits

...

5 Commits

Author SHA1 Message Date
Alexis Rolland
2f9d725f4b
Merge 70ebe28cd6 into 025e6792ee 2026-05-03 08:55:29 -07:00
Alexis Rolland
70ebe28cd6 Merge branch 'alexis/split_image_channel' of https://github.com/Comfy-Org/ComfyUI into alexis/split_image_channel 2026-04-24 15:30:32 +08:00
Alexis Rolland
ca94b7ead3 Update search aliases 2026-04-24 15:29:22 +08:00
Alexis Rolland
3520f32e22
Merge branch 'master' into alexis/split_image_channel 2026-04-24 15:23:03 +08:00
Alexis Rolland
547ed9b4a9 Add new node to split image channels 2026-04-24 15:14:20 +08:00

View File

@ -185,6 +185,36 @@ class SplitImageWithAlpha(io.ComfyNode):
return io.NodeOutput(torch.stack(out_images), 1.0 - torch.stack(out_alphas))
class SplitImageChannels(io.ComfyNode):
@classmethod
def define_schema(cls):
return io.Schema(
node_id="SplitImageChannels",
search_aliases=["convert to grayscale", "extract channels", "grayscale", "split channels", "RGB channels"],
display_name="Split Image Channels",
category="mask/compositing",
inputs=[
io.Image.Input("image"),
],
outputs=[
io.Image.Output(display_name="red"),
io.Image.Output(display_name="green"),
io.Image.Output(display_name="blue"),
io.Mask.Output(display_name="alpha")
],
)
@classmethod
def execute(cls, image: torch.Tensor) -> io.NodeOutput:
images = [i[:,:,:3] for i in image]
stacked = torch.stack(images)
reds = stacked[:, :, :, 0:1].repeat(1, 1, 1, 3)
greens = stacked[:, :, :, 1:2].repeat(1, 1, 1, 3)
blues = stacked[:, :, :, 2:3].repeat(1, 1, 1, 3)
alphas = [i[:,:,3] if i.shape[2] > 3 else torch.ones_like(i[:,:,0]) for i in image]
return io.NodeOutput(reds, greens, blues, 1.0 - torch.stack(alphas))
class JoinImageWithAlpha(io.ComfyNode):
@classmethod
def define_schema(cls):
@ -214,6 +244,7 @@ class CompositingExtension(ComfyExtension):
async def get_node_list(self) -> list[type[io.ComfyNode]]:
return [
PorterDuffImageComposite,
SplitImageChannels,
SplitImageWithAlpha,
JoinImageWithAlpha,
]