Nodes/ComfyUI WPX Nodes/PenetrateStyle
ComfyUI Node

PenetrateStyle

The node that lays out a whole sticker sheet for you

By WangPengxing·Created 2 years ago·Updated 2 years ago· 0
PenetrateStyle
  • sticker_set_path
  • single_sticker_path
  • circumcircle_sticker_path
  • main_sticker_path
  • image
bg_width1600
bg_height1600
rows3
cols1
row1_stylestyle1
row1_y_offset0
row2_stylestyle2
row2_y_offset0
row3_stylestyle3
row3_y_offset0
sticker_set_cols4
random_stickers_rows3
sticker_contour_num4

PenetrateStyle is the WPX pack's layout engine - the node that assembles a full sticker sheet rather than a single collage. You give it several sticker collections and it builds a poster on a white background, split into rows, with each row arranged in one of five different "styles." Think of a sticker catalog page: one row of stacked sets, one row of scattered singles, one row with each sticker ringed by a drawn circle. It's the kind of presentation art that sells sticker packs, and it's the most opinionated node in the pack - which is also where you can get burned.

The five styles

  • style1 - staggered stack: sticker-set images layered with offsets, like a fan of overlapping sheets.
  • style2 - random scatter: individual stickers dropped in rows with varied sizes and spacing.
  • style3 - circumcircle: single stickers, each with a drawn circle around it.
  • style4 - rotated columns: sticker sets stacked in columns with progressive rotation.
  • style5 - centerpiece: a sticker set with your main_sticker_path hero in the middle.

You pick one per row via row1_style, row2_style, row3_style (each an enum with those five choices), and nudge each row vertically with row1_y_offset / row2_y_offset / row3_y_offset.

The inputs that matter

Four image inputs feed the styles: sticker_set_path (composite/sticker-set images for styles 1, 4, 5), single_sticker_path (individual stickers for style 2), circumcircle_sticker_path (the stickers shown inside drawn circles for style 3), and main_sticker_path (the hero for style 5). All take batches.

Then the layout knobs: bg_width / bg_height (default 1600×1600 canvas), rows / cols (the grid split; defaults 3×1), sticker_set_cols (columns of sticker-sets within a style1/4/5 row, default 4), random_stickers_rows (row count for style2, default 3), and sticker_contour_num (how many circumcircle stickers in a style3 row, default 4).

Output: a single image - the finished sheet, RGBA, ready for a preview or save node.

The trap nobody warns you about

The style controls exist for exactly three rows, but the code loops over every grid cell (rows × cols) and indexes into that three-entry style list. So keep rows at 3 and cols at 1 - the defaults - or you'll hit an index error the moment there's a fourth cell. If you genuinely need more rows, you're outside what this node supports, not inside an undocumented feature.

Installing

ComfyUI Manager → search "ComfyUI WPX Nodes" → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/WangPengxing/ComfyUI_WPX_Node
# restart ComfyUI

No models, no keys. The pack imports rtree and scipy at startup - missing either and the whole WPX_Node menu vanishes. pip install rtree scipy and restart.

Troubleshooting

  • IndexError with more than 3 cells. Set rows=3, cols=1 and design within that frame.
  • A row looks empty. Each style pulls from a different input path. Style2 rows are empty if single_sticker_path isn't wired; style3 rows are empty without circumcircle_sticker_path. Match the inputs to the styles you picked.
  • [DEBUG] console spam and stray viewer windows. Par for the course in this 0.0.1 pack.

It's a one-maintainer, early-2025, zero-footprint pack - treat it as a working prototype, not a maintained library. But if your job is "produce sticker catalog pages," PenetrateStyle turns a pile of PNGs into a presentable sheet in one node.

CategoryWPX_Node/main_image

Inputs (17)

NameTypeDefaultDescription
sticker_set_pathIMAGE
single_sticker_pathIMAGE
circumcircle_sticker_pathIMAGE
main_sticker_pathIMAGE
bg_widthINT16001–10000
bg_heightINT16001–10000
rowsINT31–10
colsINT11–10
row1_styleCOMBOstyle15 options: style1, style2, style3, style4, style5
row1_y_offsetINT0-1000–1000
row2_styleCOMBOstyle25 options: style1, style2, style3, style4, style5
row2_y_offsetINT0-1000–1000
row3_styleCOMBOstyle35 options: style1, style2, style3, style4, style5
row3_y_offsetINT0-1000–1000
sticker_set_colsINT41–10
random_stickers_rowsINT31–10
sticker_contour_numINT41–10

Outputs (1)

NameTypeDescription
imageIMAGE