Nodes/comfy_Pond_Nodes/🐳图文拼接V2
ComfyUI Node

🐳图文拼接V2

The contact sheet node where every image gets its own caption

By Pondowner857·Created about a year ago·Updated 21 days ago· 45
🐳图文拼接V2
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • image_9
  • image_10
  • image
num_pairs2
layouthorizontal
uniform_sizetrue
uniform_modemax
text_positionbottom
text_margin10
text_padding30
font_namedefault
font_size20
font_color#000000
bg_color#FFFFFF
gap10
text_area_border0
border_color#000000
text_1
text_2
text_3
text_4
text_5
text_6
text_7
text_8
text_9
text_10

The original 图文拼接 gives you one caption for the whole sheet. This one, 🐳图文拼接V2 (Image Text Pair Composite), is the version where every image carries its own label - which is the thing you actually want for half the use cases. Prompt A vs prompt B. Three models, same seed, each thumbnail named. A dataset preview where each row says what it is. That's exactly what this node was built for.

Mechanically it's the same family as its older sibling: pick a layout, unify sizes, render text. The difference is that instead of images plus a shared caption, you wire pairs - image_1 with text_1, image_2 with text_2, and so on up to ten pairs.

How it works

Set num_pairs to how many image+text pairs you're using, wire the image_N and text_N slots, and the node builds each pair's image, stamps its text on a padding band, then arranges all the pairs in your chosen layout:

  • layout - horizontal, vertical, or grid.
  • uniform_size + uniform_mode - unify image heights first (max, min, first, or average), preserving aspect ratio.
  • text_position - where each pair's caption sits: top, bottom, left, right, or center.
  • gap - the spacing between pairs, which is the new knob this node adds over the original. On a grid of labeled tiles, that's the difference between "sheet" and "mess."
  • text_margin, text_padding, font_name, font_size, font_color, bg_color, text_area_border, border_color - the same styling set as the V1 node.

Output is a single image - the fully-labeled composite, ready for Save Image or a preview.

The inputs that matter

  • num_pairs - set it before wiring; it controls which image_N/text_N slots are read.
  • gap - the spacing between pairs; tune it first when a grid looks cramped.
  • font_size - 8 to 200, default 20. Labels at 20px look fine on a two-up comparison and tiny on a 10-pair grid.
  • font_name - the dropdown reads from the pack's typy font folder (custom_nodes/comfy_Pond_Nodes/nodes/typy). Drop a .ttf there and restart to add fonts. For Chinese/Japanese captions, pick the bundled AlibabaPuHuiTi or you'll get tofu boxes.

A practical gotcha: an empty text_N isn't an error - the pair still composites, just with a blank caption band. So if you've wired nine pairs and the tenth keeps showing up uncaptioned, you forgot its text slot, not the images.

Install

Same pack, same drill:

ComfyUI Manager → search "Pond Nodes" (comfy_Pond_Nodes)

or:

cd ComfyUI/custom_nodes
git clone https://github.com/Pondowner857/comfy_Pond_Nodes
cd comfy_Pond_Nodes
pip install -r requirements.txt

Restart after installing. This node only needs Pillow and numpy, so don't feel obliged to satisfy the whole requirements.txt. And the pack's standing warning applies: a documented console-spam conflict with comfyui_HiDream-Sampler is the first thing to suspect if your terminal goes noisy.

Category🐳Pond/Image

Inputs (34)

NameTypeDefaultDescription
num_pairsINT21–10
layoutCOMBOhorizontal3 options: horizontal, vertical, grid
uniform_sizeBOOLEANtrue
uniform_modeCOMBOmax4 options: max, min, first, average
text_positionCOMBObottom5 options: top, bottom, left, right, center
text_marginINT100–100
text_paddingINT3010–200
font_nameCOMBOdefault2 options: default, AlibabaPuHuiTi-2-65-Medium.ttf
font_sizeINT208–200
font_colorSTRING#000000
bg_colorSTRING#FFFFFF
gapINT100–100
text_area_borderINT00–50
border_colorSTRING#000000
image_1optIMAGE
text_1optSTRING
image_2optIMAGE
text_2optSTRING
image_3optIMAGE
text_3optSTRING
image_4optIMAGE
text_4optSTRING
image_5optIMAGE
text_5optSTRING
image_6optIMAGE
text_6optSTRING
image_7optIMAGE
text_7optSTRING
image_8optIMAGE
text_8optSTRING
image_9optIMAGE
text_9optSTRING
image_10optIMAGE
text_10optSTRING

Outputs (1)

NameTypeDescription
imageIMAGE