mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-05-03 05:42:31 +08:00
Add new node to split image channels
This commit is contained in:
parent
1de83f91c3
commit
547ed9b4a9
@ -185,6 +185,36 @@ class SplitImageWithAlpha(io.ComfyNode):
|
|||||||
return io.NodeOutput(torch.stack(out_images), 1.0 - torch.stack(out_alphas))
|
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=["extract alpha", "extract channels", "separate transparency", "split channels", "remove alpha"],
|
||||||
|
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):
|
class JoinImageWithAlpha(io.ComfyNode):
|
||||||
@classmethod
|
@classmethod
|
||||||
def define_schema(cls):
|
def define_schema(cls):
|
||||||
@ -217,6 +247,7 @@ class CompositingExtension(ComfyExtension):
|
|||||||
async def get_node_list(self) -> list[type[io.ComfyNode]]:
|
async def get_node_list(self) -> list[type[io.ComfyNode]]:
|
||||||
return [
|
return [
|
||||||
PorterDuffImageComposite,
|
PorterDuffImageComposite,
|
||||||
|
SplitImageChannels,
|
||||||
SplitImageWithAlpha,
|
SplitImageWithAlpha,
|
||||||
JoinImageWithAlpha,
|
JoinImageWithAlpha,
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user