π CR Page Layout
Wrap an image in a header, footer, and border in one node
- image_panel
- image
- show_help
Comfyroll started life partly as tooling for the "Comfyroll Template Workflows" - pre-built layouts for things like social media posts and print pieces - and CR Page Layout is one of the clearest examples of that lineage. It takes a single image and frames it: an optional header bar with text, an optional footer bar with text, a background color behind the whole thing, and a border around the edge. One node, one composited page.
What it's for
If you're generating an image and it needs to become a finished piece of graphic design - a title above it, a caption below it, a clean border, a background color that isn't just the image's own edge - you'd otherwise be stacking several separate compositing nodes to build that up by hand. CR Page Layout does the whole thing in one pass: pick which combination of header/footer you want, set the text and sizing for each, and it hands you back a finished, framed image.
How it works
layout_options decides the overall shape: header only, footer only, both, or neither (in which case you're effectively just applying a border and background). The header and footer are independent bars with their own height, their own text, and their own alignment - they don't have to match each other. Everything else (font, color choices, border) is shared across the whole composition.
Inputs and outputs that matter
layout_options- header / footer / header and footer / no header or footer.image_panel(IMAGE) - the image being framed.header_height/header_text/header_alignand the matchingfooter_height/footer_text/footer_align- set to 0 height to effectively disable a bar even iflayout_optionsincludes it.font_name- one of the pack's ten bundled fonts (Roboto, Oswald, Impact, a comic font, and a few stylistic options including Arabic support).header_font_size(default 150) andfooter_font_size(default 50) - deliberately different defaults, since a header is usually a title and a footer is usually smaller caption text.font_color,border_color,background_color- each picks from roughly 30 named colors, with "custom" as an option; when you pick custom on any of them, set the matching optional hex field (font_color_hex,border_color_hex,bg_color_hex) instead.border_thickness(default 0) - pixel width of the border around the whole composition; 0 means no visible border regardless of the color you picked.
Output is the composed image, plus the pack-standard show_help link to this node's wiki page.
How to install it
Via ComfyUI Manager: search "Comfyroll Studio." Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git
Restart ComfyUI afterward. Fonts ship with the pack; no separate downloads needed.
Common issues & troubleshooting
Header or footer text isn't showing even though layout_options includes it. Check the corresponding height field - a header with header_height at 0 has no room to draw text into, even if header_text is filled in and layout_options is set to include it.
Colors aren't matching what you picked from the dropdown. If font_color, border_color, or background_color is set to "custom," the node uses the matching _hex field instead of the dropdown selection - and that hex field defaults to black, so a forgotten custom selection will show up as unexpected black.
No border visible despite setting a border color. border_thickness defaults to 0. The color setting alone doesn't draw anything - you need a non-zero thickness for the border to appear at all.
Text overflows or gets cut off in a bar. Header and footer bars have a fixed pixel height (header_height / footer_height) - long text at a large font size can overflow that space. Either shrink header_font_size/footer_font_size or increase the bar's height to fit.
Pack doesn't load at all. That's an install-level problem, not this node specifically. Reinstall clean - delete ComfyUI_Comfyroll_CustomNodes and re-clone - rather than debugging a partial install.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| layout_options | COMBO | 4 options: header, footer, header and footer, no header or footer | |
| image_panel | IMAGE | β | |
| header_height | INT | 00β1024 | β |
| header_text | STRING | text | β |
| header_align | COMBO | 3 options: left, center, right | |
| footer_height | INT | 00β1024 | β |
| footer_text | STRING | text | β |
| footer_align | COMBO | 3 options: left, center, right | |
| font_name | COMBO | 10 options: Roboto-Regular.ttf, Quicksand-Bold.ttf, Oswald-Bold.ttf, comic.ttf, AlumniSansCollegiateOne-Regular.ttf, NotoSansArabic-Regular.ttf, +4 | |
| font_color | COMBO | 30 options: custom, white, black, red, green, blue, +24 | |
| header_font_size | INT | 1500β1024 | β |
| footer_font_size | INT | 500β1024 | β |
| border_thickness | INT | 00β1024 | β |
| border_color | COMBO | 30 options: custom, white, black, red, green, blue, +24 | |
| background_color | COMBO | 30 options: custom, white, black, red, green, blue, +24 | |
| font_color_hexopt | STRING | #000000 | β |
| border_color_hexopt | STRING | #000000 | β |
| bg_color_hexopt | STRING | #000000 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| show_help | STRING | β |