ποΈ Manual Alpha Mask Painter (FSL)
ποΈ Manual Alpha Mask Painter (FSL) β turn a mask into transparency for GRIPTAPE inpainting
- image
- mask
- image_out
- mask_out
Here's a node that exists because of one specific ecosystem quirk: GRIPTAPE inpainting wants its edits as an alpha channel, not as a separate mask. FSL Manual Alpha Mask Painter takes an image plus a mask and stamps the mask into the image's alpha channel - black mask areas become transparent, so downstream nodes that read alpha know exactly where to regenerate. The README calls it "essential for GRIPTAPE inpainting," and for that workflow it genuinely is.
Why this matters
ComfyUI convention is to keep masks as a separate MASK tensor alongside the image. That's clean, but a chunk of the inpainting ecosystem - GRIPTAPE being the notable one - was built around RGBA images where the alpha channel is the mask. If you feed those nodes a plain RGB image, they have nothing to work with. This node bridges the gap: RGB in, RGBA out, with your mask burned into the alpha plane.
It's also just handy for transparent-PNG work generally. Want to composite something later with real transparency? Painting a mask in and letting this node turn it into alpha is the manual version of what the pack's FSL-Save-And-Strip-Alpha and FSL-Composite-With-Mask handle on the save side.
How it works
The mechanism is a three-step tensor shuffle: convert the image to RGBA, copy the mask's values into the alpha channel, and return both the RGBA image and the mask as separate outputs.
image_out- the RGBA IMAGE tensor, alpha = mask.mask_out- the original MASK, passed through (values 0β1), so you keep a mask copy if you need one downstream.
Both inputs are required: image (IMAGE) and mask (MASK). No settings, no options, no feathering - you bring the mask already shaped the way you want it.
The input gotcha
White vs black semantics matter and it's easy to invert them. The node copies mask values straight into alpha: where the mask is black (0), alpha is 0 β transparent. Where it's white (1), alpha is 1 β opaque. That's the opposite convention of most ComfyUI masks, where white marks the region you act on. So for a typical "inpaint this area" mask painted white-on-black, you usually need to invert it first (a stock InvertMask node does the job) - otherwise you'll make everything except your edit region transparent. If your output looks like a hole where your image should be, that's the inversion, not the node.
Install & context
Ships with the pack: ComfyUI Manager β "ComfyUI FSL Nodes", or git clone https://github.com/fredlef/Comfyui_FSL_Nodes into custom_nodes, pip install -r requirements.txt, restart. Pure local, no API key.
One honest note on the bigger picture: the KB's inpainting.md argues mask-based editing is losing ground to whole-image edit models that can't leave other pixels untouched. That trend is exactly why a mask-aware path like GRIPTAPE still matters for people who need untouched pixels - which is the same reason Fred LeFevre's T-shirt and product-design workflows revolve around these alpha helpers. If you're doing product mockups or layered compositing, this node's job is unlikely to be automated away.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| mask | MASK | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image_out | IMAGE | β |
| mask_out | MASK | β |