Nodes/Comfyui_LG_Tools/🎈FastCanvas
ComfyUI Node

🎈FastCanvas

The node that tries to be a mini Photoshop

By LAOGOU-666·Created 2 years ago·Updated 7 months ago· 369
🎈FastCanvas
  • fc_data
  • transform_data
  • image
  • mask
  • transform_data

FastCanvas is the flagship of LAOGOU-666's Comfyui_LG_Tools pack and the reason most people find the pack at all. It's a full interactive canvas living inside a node: you drag images in, position and scale them like layers, and the node hands you the composed image, the mask of whichever layer you've selected, and the transform data describing every layer's position. The author pitched the whole pack on r/comfyui as a "real-time interactive node package," and this is the node that pitch is really about.

Why would you reach for it? Composition. That moment where you want to eyeball where a subject sits in a frame - move it left, bigger, rotated a touch - before it goes to inpainting, compositing, or a ControlNet pass. Normally that's a loop of "tweak a number, rerun, squint." FastCanvas makes it drag-and-drop, and it's genuinely the most usable simple canvas node of its kind, which is also what the author claims and nobody really contests.

How it works

The node pauses execution and shows you a canvas. You can feed it in two ways: standalone (just drag images in), or via the fc_data input from FastCanvasTool, which hands it a background plus named layers programmatically. The heavy lifting is frontend - a ~3,600-line canvas implementation that sends composited state back to the node when you're done.

Outputs (all three are wired into the canvas when it returns):

  • image - the composited canvas as an IMAGE.
  • mask - the mask of the currently selected layer. This is the sneaky-useful one: it gives you a ready-made mask for whatever you've been arranging.
  • transform_data (TRANSFORM_DATA) - position, scale, angle and size of every layer. Keep it and you can reproduce the layout elsewhere, e.g. through FastCanvasComposite.

Two optional inputs matter: fc_data (from FastCanvasTool) seeds the canvas with programmatic layers, and transform_data lets you feed an existing layout back in - the README's "batch mode" inherits each layer's position and scale as you switch inputs, which is how people build multi-shot composites without re-arranging every frame.

The RGBA trap

The README hammers this and it's the #1 beginner burn: ComfyUI's stock Load Image outputs RGB, not RGBA. When you feed an image with transparency through the canvas, the alpha can silently vanish, and a "transparent PNG" comes back flattened. If you need to preserve alpha, you must merge an alpha channel into an RGBA image before it enters the canvas (an ImageAlphaJoin or similar step). The canvas accepts RGB or RGBA inputs - it just won't manufacture an alpha you didn't give it.

Installing it

Part of Comfyui_LG_Tools:

cd ComfyUI/custom_nodes
git clone https://github.com/LAOGOU-666/Comfyui_LG_Tools.git
pip install -r requirements.txt

Or ComfyUI Manager → "Comfyui_LG_Tools" → restart. It's under Add Node → 🎈LAOGOU → Canvas. All the canvas logic is frontend JS, so no extra Python deps beyond the pack's.

Common issues

  • The canvas ignores your clicks. This node is pure frontend interactivity, and ComfyUI's own Nodes 2.0 frontend rewrite has a documented history of breaking exactly this kind of custom interactive node (rgthree's comparer broke the same way). If you're on the new frontend and FastCanvas misbehaves, switching back to the legacy canvas is the standing workaround.
  • It times out and returns nothing. The node blocks up to 30 seconds waiting for you. In API/headless mode there's nobody to answer and you get empty outputs - don't put it in an unattended batch.
  • "My transparent background is gone." See the RGBA trap above. Merge alpha before it hits the canvas.
  • Chinese-only UI. The canvas controls and node names are Chinese-first; expect to learn a few by muscle memory.

It's not a replacement for a real compositor, and it won't survive headless automation. But for interactive composition inside a workflow, it's the standout node in this pack - and it's the reason to install the pack at all.

Category🎈LAOGOU/Canvas

Inputs (2)

NameTypeDefaultDescription
fc_dataoptFC_DATA
transform_dataoptTRANSFORM_DATA

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
transform_dataTRANSFORM_DATA