ComfyUI Node

Comic Row

Comic Row

By lisaks·Created about a year ago·Updated about a year ago· 8
Comic Row
  • frame1
  • frame2
  • frame3
  • frame4
  • frame5
  • preview
  • row_data
spacing10
alignment

Comic Row (class RowNode) does the thing you'd otherwise wrestle out of a generic compositing node: glues up to five panels into a single horizontal strip with even gutters and per-panel vertical alignment. It's the middle layer of Pixstri ComfyUI Comics (lisaks/comfyui-panelforge) - it eats Comic Frame output on one side and hands a finished row to Comic Page on the other. If all you want is a quick row of panels for a reaction-image, this is the node you'd grab before reaching for the image-editor.

How it works

You connect up to five FRAME_DATA dicts on frame1frame5, and it pastes them side by side on a white canvas. Width is the sum of the frame widths plus spacing between each pair; height is whatever the tallest frame is. Each shorter frame gets placed top, center, or bottom per your alignment choice. It also records each frame's x, y, width, height into the row_data dict it passes upward - that's informational, since PageNode actually uses the row's baked image.

A nice touch for a small pack: feed it no frames at all and it doesn't error out. You get a gray 400×200 placeholder that literally says "No frames provided." It'll still run and let you iterate the rest of your graph.

The inputs that matter

  • frame1frame5 (optional) - FRAME_DATA from Comic Frame nodes. Wire them in order; any you leave empty are just skipped.
  • spacing (0–100, default 10) - the horizontal gap between panels, in raw pixels.
  • alignment - top, center, or bottom. Only does anything when your frames aren't all the same height, which with generated panels is most of the time.

Outputs

Two outputs: preview (IMAGE) and row_data (ROW_DATA). A pleasant difference from its little sibling FrameNode - RowNode's IMAGE output is properly normalized float, so it's actually safe to feed into Save Image or an upscaler if you want the strip on its own. The row_data output is what PageNode's row1row5 inputs expect.

Installing it

Same story as the rest of the pack - no models, no keys, pure compositing. ComfyUI Manager, search "Pixstri", install, restart. Or:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/lisaks/comfyui-panelforge
# restart ComfyUI

The README's own clone command points at a placeholder (yourusername/pixstri.git), so trust the URL above, not the doc. The code needs Pillow but only ships torch and numpy in requirements.txt - in practice you get Pillow from ComfyUI's own install, so there's nothing extra to run.

Common issues

  • The row is as tall as its tallest frame - that's the design, not a bug. Short panels hang top/center/bottom wherever you set alignment, and the row background behind them stays white. If you want every panel visually centered, pick center.
  • Need six panels in a row? The five frame inputs are hard-coded. Build two rows and stack them on the page.
  • Gutters that scale with panel size aren't possible here - spacing is fixed pixels. For proportional gutters you'd want a montage node instead.
  • A row that looks empty - check you actually connected frame_data (not the IMAGE preview) from FrameNode. The FRAME_DATA path is what carries the processed image into the row.
CategoryPixstri/Comics

Inputs (7)

NameTypeDefaultDescription
spacingINT100–100
alignmentCOMBO3 options: top, center, bottom
frame1optFRAME_DATA
frame2optFRAME_DATA
frame3optFRAME_DATA
frame4optFRAME_DATA
frame5optFRAME_DATA

Outputs (2)

NameTypeDescription
previewIMAGE
row_dataROW_DATA