ComfyPilotComfyPilot
工作流 / 节点基础 / 图像拼接 2x2 网格
图像拼接 2x2 网格

图像拼接 2x2 网格

Image Stitch 2x2 Grid

将四张输入图像组合成2x2网格。自动调整不匹配图像的尺寸并输出一张2048x2048的图像。

节点基础 10 个节点 4 个输入 20 次使用 ComfyUI ≥ 0.8.0 ComfyUI 11 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

节点构成

LoadImage × 4
ImageStitch × 3
ResizeImageMaskNode × 1
SaveImage × 1
MarkdownNote × 1

官方标注的模型

None

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "064cea11-7b7a-4d67-8a15-885ff3930ba8",
3 "revision": 0,
4 "last_node_id": 24,
5 "last_link_id": 26,
6 "nodes": [
7 {
8 "id": 12,
9 "type": "LoadImage",
10 "pos": [
11 -550.0000654620889,
12 5939.999885559082
13 ],
14 "size": [
15 240,
16 364
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [
22 {
23 "label": "image1",
24 "name": "image",
25 "type": "COMBO",
26 "widget": {
27 "name": "image"
28 },
29 "link": null
30 }
31 ],
32 "outputs": [
33 {
34 "name": "IMAGE",
35 "type": "IMAGE",
36 "links": [
37 11
38 ]
39 },
40 {
41 "name": "MASK",
42 "type": "MASK",
43 "links": null
44 }
45 ],
46 "properties": {
47 "Node name for S&R": "LoadImage",
48 "cnr_id": "comfy-core",
49 "ver": "0.17.0",
50 "ue_properties": {
51 "widget_ue_connectable": [],
52 "input_ue_unconnectable": [],
53 "version": "7.7"
54 }
55 },
56 "widgets_values": [
57 "angle_1.png",
58 "image"
59 ]
60 },
61 {
62 "id": 13,
63 "type": "LoadImage",
64 "pos": [
65 -290.0000932481553,
66 5939.999885559082
67 ],
68 "size": [
69 240,
70 364
71 ],
72 "flags": [],
73 "order": 1,
74 "mode": 0,
75 "inputs": [
76 {
77 "label": "image2",
78 "name": "image",
79 "type": "COMBO",
80 "widget": {
81 "name": "image"
82 },
83 "link": null
84 }
85 ],
86 "outputs": [
87 {
88 "name": "IMAGE",
89 "type": "IMAGE",
90 "links": [
91 12
92 ]
93 },
94 {
95 "name": "MASK",
96 "type": "MASK",
97 "links": null
98 }
99 ],
100 "properties": {
101 "Node name for S&R": "LoadImage",
102 "cnr_id": "comfy-core",
103 "ver": "0.17.0",
104 "ue_properties": {
105 "widget_ue_connectable": [],
106 "input_ue_unconnectable": [],
107 "version": "7.7"
108 }
109 },
110 "widgets_values": [
111 "angle_2.png",
112 "image"
113 ]
114 },
115 {
116 "id": 16,
117 "type": "ImageStitch",
118 "pos": [
119 0,
120 5940
121 ],
122 "size": [
123 230,
124 160
125 ],
126 "flags": [],
127 "order": 5,
128 "mode": 0,
129 "inputs": [
130 {
131 "name": "image1",
132 "type": "IMAGE",
133 "link": 11
134 },
135 {
136 "name": "image2",
137 "shape": 7,
138 "type": "IMAGE",
139 "link": 12
140 }
141 ],
142 "outputs": [
143 {
144 "name": "IMAGE",
145 "type": "IMAGE",
146 "links": [
147 15
148 ]
149 }
150 ],
151 "properties": {
152 "Node name for S&R": "ImageStitch",
153 "cnr_id": "comfy-core",
154 "ver": "0.17.0",
155 "ue_properties": {
156 "widget_ue_connectable": [],
157 "input_ue_unconnectable": [],
158 "version": "7.7"
159 }
160 },
161 "widgets_values": [
162 "right",
163 true,
164 0,
165 "white"
166 ]
167 },
168 {
169 "id": 21,
170 "type": "ResizeImageMaskNode",
171 "pos": [
172 520,
173 5940
174 ],
175 "size": [
176 270,
177 239.984375
178 ],
179 "flags": [],
180 "order": 8,
181 "mode": 0,
182 "inputs": [
183 {
184 "name": "input",
185 "type": "IMAGE,MASK",
186 "link": 19
187 }
188 ],
189 "outputs": [
190 {
191 "name": "resized",
192 "type": "IMAGE",
193 "links": [
194 18
195 ]
196 }
197 ],
198 "properties": {
199 "Node name for S&R": "ResizeImageMaskNode",
200 "cnr_id": "comfy-core",
201 "ver": "0.17.0",
202 "ue_properties": {
203 "widget_ue_connectable": [],
204 "input_ue_unconnectable": [],
205 "version": "7.7"
206 }
207 },
208 "widgets_values": [
209 "scale dimensions",
210 2048,
211 2048,
212 "center",
213 "lanczos"
214 ]
215 },
216 {
217 "id": 18,
218 "type": "ImageStitch",
219 "pos": [
220 260,
221 5940
222 ],
223 "size": [
224 230,
225 160
226 ],
227 "flags": [],
228 "order": 7,
229 "mode": 0,
230 "showAdvanced": false,
231 "inputs": [
232 {
233 "name": "image1",
234 "type": "IMAGE",
235 "link": 15
236 },
237 {
238 "name": "image2",
239 "shape": 7,
240 "type": "IMAGE",
241 "link": 16
242 }
243 ],
244 "outputs": [
245 {
246 "name": "IMAGE",
247 "type": "IMAGE",
248 "links": [
249 19
250 ]
251 }
252 ],
253 "properties": {
254 "Node name for S&R": "ImageStitch",
255 "cnr_id": "comfy-core",
256 "ver": "0.17.0",
257 "ue_properties": {
258 "widget_ue_connectable": [],
259 "input_ue_unconnectable": [],
260 "version": "7.7"
261 }
262 },
263 "widgets_values": [
264 "down",
265 true,
266 0,
267 "white"
268 ]
269 },
270 {
271 "id": 17,
272 "type": "ImageStitch",
273 "pos": [
274 0,
275 6180
276 ],
277 "size": [
278 230,
279 160
280 ],
281 "flags": [],
282 "order": 6,
283 "mode": 0,
284 "inputs": [
285 {
286 "name": "image1",
287 "type": "IMAGE",
288 "link": 13
289 },
290 {
291 "name": "image2",
292 "shape": 7,
293 "type": "IMAGE",
294 "link": 14
295 }
296 ],
297 "outputs": [
298 {
299 "name": "IMAGE",
300 "type": "IMAGE",
301 "links": [
302 16
303 ]
304 }
305 ],
306 "properties": {
307 "Node name for S&R": "ImageStitch",
308 "cnr_id": "comfy-core",
309 "ver": "0.17.0",
310 "ue_properties": {
311 "widget_ue_connectable": [],
312 "input_ue_unconnectable": [],
313 "version": "7.7"
314 }
315 },
316 "widgets_values": [
317 "right",
318 true,
319 0,
320 "white"
321 ]
322 },
323 {
324 "id": 19,
325 "type": "SaveImage",
326 "pos": [
327 930,
328 5930
329 ],
330 "size": [
331 520,
332 600
333 ],
334 "flags": [],
335 "order": 9,
336 "mode": 0,
337 "inputs": [
338 {
339 "name": "images",
340 "type": "IMAGE",
341 "link": 18
342 }
343 ],
344 "outputs": [],
345 "properties": {
346 "cnr_id": "comfy-core",
347 "ver": "0.17.0",
348 "ue_properties": {
349 "widget_ue_connectable": [],
350 "input_ue_unconnectable": [],
351 "version": "7.7"
352 }
353 },
354 "widgets_values": [
355 "ComfyUI"
356 ]
357 },
358 {
359 "id": 14,
360 "type": "LoadImage",
361 "pos": [
362 -550.0000654620889,
363 6360
364 ],
365 "size": [
366 240,
367 364
368 ],
369 "flags": [],
370 "order": 2,
371 "mode": 0,
372 "inputs": [
373 {
374 "label": "image3",
375 "name": "image",
376 "type": "COMBO",
377 "widget": {
378 "name": "image"
379 },
380 "link": null
381 }
382 ],
383 "outputs": [
384 {
385 "name": "IMAGE",
386 "type": "IMAGE",
387 "links": [
388 13
389 ]
390 },
391 {
392 "name": "MASK",
393 "type": "MASK",
394 "links": null
395 }
396 ],
397 "properties": {
398 "Node name for S&R": "LoadImage",
399 "cnr_id": "comfy-core",
400 "ver": "0.17.0",
401 "ue_properties": {
402 "widget_ue_connectable": [],
403 "input_ue_unconnectable": [],
404 "version": "7.7"
405 }
406 },
407 "widgets_values": [
408 "angle_3.png",
409 "image"
410 ]
411 },
412 {
413 "id": 24,
414 "type": "MarkdownNote",
415 "pos": [
416 -1050.0000186025359,
417 5949.9998954490375
418 ],
419 "size": [
420 460,
421 437.46875
422 ],
423 "flags": [],
424 "order": 3,
425 "mode": 0,
426 "inputs": [],
427 "outputs": [],
428 "properties": [],
429 "widgets_values": [
430 "# Image Stitch Grid Workflow\n\n4 images → 2×2 grid → saved at 2048×2048.\n\n**How it chains:**\n1. `Image Stitch (right)` — joins top-left + top-right into a row\n2. `Image Stitch (right)` — joins bottom-left + bottom-right into a row\n3. `Image Stitch (down)` — stacks both rows into the final grid\n\n**Key settings:**\n- `direction` — `right` for horizontal, `down` for vertical\n- `match_image_size: ON` — auto-resizes mismatched inputs"
431 ],
432 "color": "#222",
433 "bgcolor": "#000"
434 },
435 {
436 "id": 15,
437 "type": "LoadImage",
438 "pos": [
439 -290,
440 6360
441 ],
442 "size": [
443 240,
444 364
445 ],
446 "flags": [],
447 "order": 4,
448 "mode": 0,
449 "inputs": [
450 {
451 "label": "image4",
452 "name": "image",
453 "type": "COMBO",
454 "widget": {
455 "name": "image"
456 },
457 "link": null
458 }
459 ],
460 "outputs": [
461 {
462 "name": "IMAGE",
463 "type": "IMAGE",
464 "links": [
465 14
466 ]
467 },
468 {
469 "name": "MASK",
470 "type": "MASK",
471 "links": null
472 }
473 ],
474 "properties": {
475 "Node name for S&R": "LoadImage",
476 "cnr_id": "comfy-core",
477 "ver": "0.17.0",
478 "ue_properties": {
479 "widget_ue_connectable": [],
480 "input_ue_unconnectable": [],
481 "version": "7.7"
482 }
483 },
484 "widgets_values": [
485 "angle_4.png",
486 "image"
487 ]
488 }
489 ],
490 "links": [
491 [
492 11,
493 12,
494 0,
495 16,
496 0,
497 "IMAGE"
498 ],
499 [
500 12,
501 13,
502 0,
503 16,
504 1,
505 "IMAGE"
506 ],
507 [
508 13,
509 14,
510 0,
511 17,
512 0,
513 "IMAGE"
514 ],
515 [
516 14,
517 15,
518 0,
519 17,
520 1,
521 "IMAGE"
522 ],
523 [
524 15,
525 16,
526 0,
527 18,
528 0,
529 "IMAGE"
530 ],
531 [
532 16,
533 17,
534 0,
535 18,
536 1,
537 "IMAGE"
538 ],
539 [
540 18,
541 21,
542 0,
543 19,
544 0,
545 "IMAGE"
546 ],
547 [
548 19,
549 18,
550 0,
551 21,
552 0,
553 "IMAGE"
554 ]
555 ],
556 "groups": [],
557 "config": [],
558 "extra": {
559 "ds": {
560 "scale": 0.5557333810732232,
561 "offset": [
562 1085.5781494489909,
563 -5513.796211804457
564 ]
565 },
566 "frontendVersion": "1.42.15",
567 "workflowRendererVersion": "LG",
568 "linearData": {
569 "inputs": [],
570 "outputs": []
571 },
572 "ue_links": [],
573 "links_added_by_ue": [],
574 "VHS_latentpreview": false,
575 "VHS_latentpreviewrate": 0,
576 "VHS_MetadataImage": true,
577 "VHS_KeepIntermediate": true
578 },
579 "version": 0.4
580}