工作流 /
品牌与设计 /
LED广告牌信息

LED广告牌信息
LED Billboard Message
上传空白广告牌并叠加文字。生成平滑放大镜头,揭示您的信息。
品牌与设计
14 个节点 2 个输入 1 次使用 ComfyUI ≥ 0.13.0 hellorob 46 KB
节点构成
LoadImage
× 2
SaveImage
× 2
GeminiImage2Node
× 2
PrimitiveStringMultiline
× 2
SaveVideo
× 1
PrimitiveInt
× 1
afac6e36-94b5-4d13-ae22-66f87405e994
× 1
319c5e46-36eb-4854-a39e-1291507505e2
× 1
RegexReplace
× 1
KlingFirstLastFrameNode
× 1
官方标注的模型
Gemini3 Pro Image PreviewGoogleKlingNano Banana Pro
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "f00629e2-972d-43fc-91d7-b1144ad3652d",
3 "revision": 0,
4 "last_node_id": 79,
5 "last_link_id": 117,
6 "nodes": [
7 {
8 "id": 10,
9 "type": "LoadImage",
10 "pos": [
11 290,
12 330
13 ],
14 "size": [
15 610,
16 450
17 ],
18 "flags": {
19 "collapsed": false
20 },
21 "order": 0,
22 "mode": 0,
23 "inputs": [],
24 "outputs": [
25 {
26 "name": "IMAGE",
27 "type": "IMAGE",
28 "links": [
29 77
30 ]
31 },
32 {
33 "name": "MASK",
34 "type": "MASK",
35 "links": null
36 }
37 ],
38 "title": "Load Billboard Image",
39 "properties": {
40 "Node name for S&R": "LoadImage",
41 "cnr_id": "comfy-core",
42 "ver": "0.5.1"
43 },
44 "widgets_values": [
45 "billboard.png",
46 "image"
47 ],
48 "widgets_values_named": {
49 "image": "billboard.png",
50 "upload": "image"
51 },
52 "color": "#232",
53 "bgcolor": "#353"
54 },
55 {
56 "id": 12,
57 "type": "LoadImage",
58 "pos": [
59 290,
60 970
61 ],
62 "size": [
63 610,
64 450
65 ],
66 "flags": [],
67 "order": 1,
68 "mode": 0,
69 "inputs": [],
70 "outputs": [
71 {
72 "name": "IMAGE",
73 "type": "IMAGE",
74 "links": [
75 78
76 ]
77 },
78 {
79 "name": "MASK",
80 "type": "MASK",
81 "links": null
82 }
83 ],
84 "title": "Load Text Overlay Image",
85 "properties": {
86 "Node name for S&R": "LoadImage",
87 "cnr_id": "comfy-core",
88 "ver": "0.5.1"
89 },
90 "widgets_values": [
91 "comfyorg_logo.png",
92 "image"
93 ],
94 "widgets_values_named": {
95 "image": "comfyorg_logo.png",
96 "upload": "image"
97 },
98 "color": "#232",
99 "bgcolor": "#353"
100 },
101 {
102 "id": 19,
103 "type": "SaveImage",
104 "pos": [
105 1750,
106 330
107 ],
108 "size": [
109 880,
110 570
111 ],
112 "flags": {
113 "collapsed": false
114 },
115 "order": 8,
116 "mode": 0,
117 "inputs": [
118 {
119 "name": "images",
120 "type": "IMAGE",
121 "link": 20
122 }
123 ],
124 "outputs": [
125 {
126 "name": "images",
127 "type": "IMAGE",
128 "links": [
129 115,
130 116
131 ]
132 }
133 ],
134 "properties": {
135 "cnr_id": "comfy-core",
136 "ver": "0.5.1",
137 "Node name for S&R": "SaveImage"
138 },
139 "widgets_values": [
140 "ComfyUI-last_frame"
141 ],
142 "widgets_values_named": {
143 "filename_prefix": "ComfyUI-last_frame"
144 }
145 },
146 {
147 "id": 23,
148 "type": "SaveVideo",
149 "pos": [
150 5010,
151 330
152 ],
153 "size": [
154 1000,
155 150
156 ],
157 "flags": [],
158 "order": 13,
159 "mode": 0,
160 "inputs": [
161 {
162 "name": "video",
163 "type": "VIDEO",
164 "link": 113
165 }
166 ],
167 "outputs": [
168 {
169 "name": "video",
170 "type": "VIDEO",
171 "links": null
172 }
173 ],
174 "properties": {
175 "cnr_id": "comfy-core",
176 "ver": "0.5.1",
177 "Node name for S&R": "SaveVideo"
178 },
179 "widgets_values": [
180 "video/ComfyUI-video",
181 "auto",
182 "auto",
183 "auto"
184 ],
185 "widgets_values_named": {
186 "filename_prefix": "video/ComfyUI-video",
187 "format": "auto",
188 "format.codec": "auto",
189 "codec": "auto"
190 }
191 },
192 {
193 "id": 21,
194 "type": "SaveImage",
195 "pos": [
196 3600,
197 330
198 ],
199 "size": [
200 880,
201 570
202 ],
203 "flags": {
204 "collapsed": false
205 },
206 "order": 11,
207 "mode": 0,
208 "inputs": [
209 {
210 "name": "images",
211 "type": "IMAGE",
212 "link": 59
213 }
214 ],
215 "outputs": [
216 {
217 "name": "images",
218 "type": "IMAGE",
219 "links": [
220 117
221 ]
222 }
223 ],
224 "properties": {
225 "cnr_id": "comfy-core",
226 "ver": "0.5.1",
227 "Node name for S&R": "SaveImage"
228 },
229 "widgets_values": [
230 "ComfyUI-first_frame"
231 ],
232 "widgets_values_named": {
233 "filename_prefix": "ComfyUI-first_frame"
234 }
235 },
236 {
237 "id": 11,
238 "type": "GeminiImage2Node",
239 "pos": [
240 1210,
241 330
242 ],
243 "size": [
244 480,
245 570
246 ],
247 "flags": [],
248 "order": 7,
249 "mode": 0,
250 "inputs": [
251 {
252 "name": "images",
253 "shape": 7,
254 "type": "IMAGE",
255 "link": 79
256 },
257 {
258 "name": "files",
259 "shape": 7,
260 "type": "GEMINI_INPUT_FILES",
261 "link": null
262 }
263 ],
264 "outputs": [
265 {
266 "name": "IMAGE",
267 "type": "IMAGE",
268 "links": [
269 20
270 ]
271 },
272 {
273 "name": "STRING",
274 "type": "STRING",
275 "links": null
276 }
277 ],
278 "properties": {
279 "Node name for S&R": "GeminiImage2Node",
280 "cnr_id": "comfy-core",
281 "ver": "0.5.1"
282 },
283 "widgets_values": [
284 "Task: Realistic composite of text content onto an LED billboard mockup, preserving original composition.\n\nInput Image(s):\n- Input 1 (Scene): Billboard mockup structure and environment. The screen area is the target destination.\n- Input 2 (Content): Source image containing text/logotype (NOT THE BACKGROUND COLOR)\n\nProcess:\n1. Identify the screen surface area in Input 1.\n2. Treat only the text of Input 2 (NOT the background color) as the content to be overlayed onto the screen.\n3. Apply a perspective transformation to the entire Input 2 content canvas so it perfectly matches the angle, orientation, and boundaries of the billboard screen in Input 1.\n4. Render the transformed content with an illuminated LED matrix aesthetic.\n\nTechnical Requirements:\n- **Composition & Scale Consistency (Crucial):** The relative scale and positioning of the text as seen within the boundaries of Input 2 MUST be maintained. Do NOT scale up the text object to fill the billboard screen. If the text is small in Input 2, it must remain small relative to the screen size in the final output, surrounded by the appropriate amount of black padding.\n- **Color & Light:** The active text pixels must be the exact hexadecimal color of image 2 text. They should emit a bright, illuminated glow (halation) typical of LED signage.\n- **Screen Texture:** The entire screen surface (both lit text and unlit background padding) must show a visible, realistic grid texture of individual LED pixel diodes.\n- **Integration:** The physical structure of the billboard framing and the surrounding environment from Input 1 must be preserved exactly.\n\nOutput: The final image showing the scene from Input 1, with the screen displaying the exact composition of Input 2 (without the solid background color) as a glowing, pixelated LED array.",
285 "gemini-3-pro-image-preview",
286 11111,
287 "fixed",
288 "auto",
289 "2K",
290 "IMAGE+TEXT",
291 "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
292 ],
293 "widgets_values_named": {
294 "prompt": "Task: Realistic composite of text content onto an LED billboard mockup, preserving original composition.\n\nInput Image(s):\n- Input 1 (Scene): Billboard mockup structure and environment. The screen area is the target destination.\n- Input 2 (Content): Source image containing text/logotype (NOT THE BACKGROUND COLOR)\n\nProcess:\n1. Identify the screen surface area in Input 1.\n2. Treat only the text of Input 2 (NOT the background color) as the content to be overlayed onto the screen.\n3. Apply a perspective transformation to the entire Input 2 content canvas so it perfectly matches the angle, orientation, and boundaries of the billboard screen in Input 1.\n4. Render the transformed content with an illuminated LED matrix aesthetic.\n\nTechnical Requirements:\n- **Composition & Scale Consistency (Crucial):** The relative scale and positioning of the text as seen within the boundaries of Input 2 MUST be maintained. Do NOT scale up the text object to fill the billboard screen. If the text is small in Input 2, it must remain small relative to the screen size in the final output, surrounded by the appropriate amount of black padding.\n- **Color & Light:** The active text pixels must be the exact hexadecimal color of image 2 text. They should emit a bright, illuminated glow (halation) typical of LED signage.\n- **Screen Texture:** The entire screen surface (both lit text and unlit background padding) must show a visible, realistic grid texture of individual LED pixel diodes.\n- **Integration:** The physical structure of the billboard framing and the surrounding environment from Input 1 must be preserved exactly.\n\nOutput: The final image showing the scene from Input 1, with the screen displaying the exact composition of Input 2 (without the solid background color) as a glowing, pixelated LED array.",
295 "model": "gemini-3-pro-image-preview",
296 "seed": 11111,
297 "control_after_generate": "fixed",
298 "aspect_ratio": "auto",
299 "resolution": "2K",
300 "response_modalities": "IMAGE+TEXT",
301 "system_prompt": "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
302 },
303 "color": "#432",
304 "bgcolor": "#653"
305 },
306 {
307 "id": 58,
308 "type": "PrimitiveInt",
309 "pos": [
310 2690,
311 330
312 ],
313 "size": [
314 310,
315 90
316 ],
317 "flags": [],
318 "order": 2,
319 "mode": 0,
320 "inputs": [],
321 "outputs": [
322 {
323 "name": "INT",
324 "type": "INT",
325 "links": [
326 76
327 ]
328 }
329 ],
330 "title": "Expand Image Borders by %",
331 "properties": {
332 "Node name for S&R": "PrimitiveInt",
333 "cnr_id": "comfy-core",
334 "ver": "0.5.1"
335 },
336 "widgets_values": [
337 300,
338 "fixed"
339 ],
340 "widgets_values_named": {
341 "value": 300,
342 "fixed": "fixed"
343 },
344 "color": "#232",
345 "bgcolor": "#353"
346 },
347 {
348 "id": 73,
349 "type": "PrimitiveStringMultiline",
350 "pos": [
351 2690,
352 850
353 ],
354 "size": [
355 310,
356 160
357 ],
358 "flags": {
359 "collapsed": false
360 },
361 "order": 3,
362 "mode": 0,
363 "inputs": [],
364 "outputs": [
365 {
366 "name": "STRING",
367 "type": "STRING",
368 "links": [
369 102
370 ]
371 }
372 ],
373 "title": "Prompt Template",
374 "properties": {
375 "Node name for S&R": "PrimitiveStringMultiline",
376 "cnr_id": "comfy-core",
377 "ver": "0.9.2"
378 },
379 "widgets_values": [
380 "Task: Canvas Expansion and Content Cleanup\n\nInput Image: Contains main header text, subtext, and central visual content.\n\nProcess & Requirements:\n\n1. **Text Cleanup (Removal):**\n * Identify and completely remove the \"subtext\" element.\n * Reconstruct the area beneath the removed subtext to match the immediate surrounding background texture and lighting flawlessly.\n\n2. **Header Preservation (Constraint):**\n * Isolate the \"main header text.\"\n * Ensure this header remains in its exact original position. It must not shift during the canvas expansion process.\n\n3. **Outpainting (Generation):**\n * Expand the canvas borders to fill the transparent blank area. The original pixel information MUST remain, only generate within the transparent blank area.\n * **Content Generation:** The newly generated areas must seamlessly extend outside the existing background context and MUST include the following elements if specified: <description>\n * **Technical Consistency:** Ensure perfect continuity of lighting, shadows, color palette, texture, and perspective from the original image edges into the new expanded areas. The transition between original and new content must be invisible.\n\nOutput: A larger canvas image with the subtext removed, the main header locked in place, and the surrounding environment naturally expanded."
381 ],
382 "widgets_values_named": {
383 "value": "Task: Canvas Expansion and Content Cleanup\n\nInput Image: Contains main header text, subtext, and central visual content.\n\nProcess & Requirements:\n\n1. **Text Cleanup (Removal):**\n * Identify and completely remove the \"subtext\" element.\n * Reconstruct the area beneath the removed subtext to match the immediate surrounding background texture and lighting flawlessly.\n\n2. **Header Preservation (Constraint):**\n * Isolate the \"main header text.\"\n * Ensure this header remains in its exact original position. It must not shift during the canvas expansion process.\n\n3. **Outpainting (Generation):**\n * Expand the canvas borders to fill the transparent blank area. The original pixel information MUST remain, only generate within the transparent blank area.\n * **Content Generation:** The newly generated areas must seamlessly extend outside the existing background context and MUST include the following elements if specified: <description>\n * **Technical Consistency:** Ensure perfect continuity of lighting, shadows, color palette, texture, and perspective from the original image edges into the new expanded areas. The transition between original and new content must be invisible.\n\nOutput: A larger canvas image with the subtext removed, the main header locked in place, and the surrounding environment naturally expanded."
384 }
385 },
386 {
387 "id": 33,
388 "type": "GeminiImage2Node",
389 "pos": [
390 3060,
391 330
392 ],
393 "size": [
394 500,
395 570
396 ],
397 "flags": [],
398 "order": 10,
399 "mode": 0,
400 "inputs": [
401 {
402 "name": "images",
403 "shape": 7,
404 "type": "IMAGE",
405 "link": 69
406 },
407 {
408 "name": "files",
409 "shape": 7,
410 "type": "GEMINI_INPUT_FILES",
411 "link": null
412 },
413 {
414 "name": "prompt",
415 "type": "STRING",
416 "widget": {
417 "name": "prompt"
418 },
419 "link": 106
420 }
421 ],
422 "outputs": [
423 {
424 "name": "IMAGE",
425 "type": "IMAGE",
426 "links": [
427 59
428 ]
429 },
430 {
431 "name": "STRING",
432 "type": "STRING",
433 "links": null
434 }
435 ],
436 "properties": {
437 "Node name for S&R": "GeminiImage2Node",
438 "cnr_id": "comfy-core",
439 "ver": "0.5.1"
440 },
441 "widgets_values": [
442 "",
443 "gemini-3-pro-image-preview",
444 12345,
445 "fixed",
446 "auto",
447 "2K",
448 "IMAGE+TEXT",
449 "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
450 ],
451 "widgets_values_named": {
452 "prompt": "",
453 "model": "gemini-3-pro-image-preview",
454 "seed": 12345,
455 "control_after_generate": "fixed",
456 "aspect_ratio": "auto",
457 "resolution": "2K",
458 "response_modalities": "IMAGE+TEXT",
459 "system_prompt": "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
460 },
461 "color": "#432",
462 "bgcolor": "#653"
463 },
464 {
465 "id": 59,
466 "type": "afac6e36-94b5-4d13-ae22-66f87405e994",
467 "pos": [
468 960,
469 330
470 ],
471 "size": [
472 225,
473 102
474 ],
475 "flags": {
476 "collapsed": false
477 },
478 "order": 5,
479 "mode": 0,
480 "inputs": [
481 {
482 "name": "image1",
483 "type": "IMAGE",
484 "link": 77
485 },
486 {
487 "name": "image",
488 "type": "IMAGE",
489 "link": 78
490 }
491 ],
492 "outputs": [
493 {
494 "name": "IMAGE",
495 "type": "IMAGE",
496 "links": [
497 79
498 ]
499 }
500 ],
501 "properties": {
502 "proxyWidgets": [],
503 "cnr_id": "comfy-core",
504 "ver": "0.5.1",
505 "previewExposures": []
506 }
507 },
508 {
509 "id": 49,
510 "type": "319c5e46-36eb-4854-a39e-1291507505e2",
511 "pos": [
512 2690,
513 460
514 ],
515 "size": [
516 225,
517 102
518 ],
519 "flags": {
520 "collapsed": false
521 },
522 "order": 9,
523 "mode": 0,
524 "inputs": [
525 {
526 "name": "image",
527 "type": "IMAGE",
528 "link": 115
529 },
530 {
531 "label": "expand_img_percent",
532 "name": "a",
533 "shape": 7,
534 "type": "INT,FLOAT",
535 "link": 76
536 }
537 ],
538 "outputs": [
539 {
540 "name": "IMAGE",
541 "type": "IMAGE",
542 "links": [
543 69
544 ]
545 }
546 ],
547 "properties": {
548 "proxyWidgets": [],
549 "cnr_id": "comfy-core",
550 "ver": "0.5.1",
551 "previewExposures": [
552 {
553 "name": "$$canvas-image-preview",
554 "sourceNodeId": "45",
555 "sourcePreviewName": "$$canvas-image-preview"
556 }
557 ]
558 }
559 },
560 {
561 "id": 72,
562 "type": "RegexReplace",
563 "pos": [
564 2690,
565 610
566 ],
567 "size": [
568 225,
569 0
570 ],
571 "flags": {
572 "collapsed": true
573 },
574 "order": 6,
575 "mode": 0,
576 "inputs": [
577 {
578 "name": "string",
579 "type": "STRING",
580 "widget": {
581 "name": "string"
582 },
583 "link": 102
584 },
585 {
586 "name": "replace",
587 "type": "STRING",
588 "widget": {
589 "name": "replace"
590 },
591 "link": 104
592 }
593 ],
594 "outputs": [
595 {
596 "name": "STRING",
597 "type": "STRING",
598 "links": [
599 106
600 ]
601 }
602 ],
603 "properties": {
604 "Node name for S&R": "RegexReplace",
605 "cnr_id": "comfy-core",
606 "ver": "0.9.2"
607 },
608 "widgets_values": [
609 "",
610 "<description>",
611 "",
612 true,
613 false,
614 false,
615 0
616 ],
617 "widgets_values_named": {
618 "string": "",
619 "regex_pattern": "<description>",
620 "replace": "",
621 "case_insensitive": true,
622 "multiline": false,
623 "dotall": false,
624 "count": 0
625 }
626 },
627 {
628 "id": 71,
629 "type": "PrimitiveStringMultiline",
630 "pos": [
631 2690,
632 670
633 ],
634 "size": [
635 310,
636 126
637 ],
638 "flags": [],
639 "order": 4,
640 "mode": 0,
641 "inputs": [],
642 "outputs": [
643 {
644 "name": "STRING",
645 "type": "STRING",
646 "links": [
647 104
648 ]
649 }
650 ],
651 "title": "Describe the Outpainted Region",
652 "properties": {
653 "Node name for S&R": "PrimitiveStringMultiline",
654 "cnr_id": "comfy-core",
655 "ver": "0.9.2"
656 },
657 "widgets_values": [
658 ""
659 ],
660 "widgets_values_named": {
661 "value": ""
662 },
663 "color": "#232",
664 "bgcolor": "#353"
665 },
666 {
667 "id": 79,
668 "type": "KlingFirstLastFrameNode",
669 "pos": [
670 4550,
671 330
672 ],
673 "size": [
674 410,
675 350
676 ],
677 "flags": [],
678 "order": 12,
679 "mode": 0,
680 "inputs": [
681 {
682 "name": "first_frame",
683 "type": "IMAGE",
684 "link": 117
685 },
686 {
687 "name": "end_frame",
688 "type": "IMAGE",
689 "link": 116
690 }
691 ],
692 "outputs": [
693 {
694 "name": "VIDEO",
695 "type": "VIDEO",
696 "links": [
697 113
698 ]
699 }
700 ],
701 "properties": {
702 "Node name for S&R": "KlingFirstLastFrameNode"
703 },
704 "widgets_values": [
705 "LED billboard text morphs, pixel glyphs flicker and cascade like a digital waterfall, individual LED cells pulse and brighten as new letters materialize, slight camera zoom in revealing more billboard detail and closer framing on screen, maintaining the textured LED grid with radiant glow against black panel. ",
706 5,
707 true,
708 "kling-v3",
709 "1080p",
710 0,
711 "randomize"
712 ],
713 "widgets_values_named": {
714 "prompt": "LED billboard text morphs, pixel glyphs flicker and cascade like a digital waterfall, individual LED cells pulse and brighten as new letters materialize, slight camera zoom in revealing more billboard detail and closer framing on screen, maintaining the textured LED grid with radiant glow against black panel. ",
715 "duration": 5,
716 "generate_audio": true,
717 "model": "kling-v3",
718 "model.resolution": "1080p",
719 "seed": 0,
720 "control_after_generate": "randomize"
721 },
722 "color": "#432",
723 "bgcolor": "#653"
724 }
725 ],
726 "links": [
727 [
728 20,
729 11,
730 0,
731 19,
732 0,
733 "IMAGE"
734 ],
735 [
736 59,
737 33,
738 0,
739 21,
740 0,
741 "IMAGE"
742 ],
743 [
744 69,
745 49,
746 0,
747 33,
748 0,
749 "IMAGE"
750 ],
751 [
752 76,
753 58,
754 0,
755 49,
756 1,
757 "INT"
758 ],
759 [
760 77,
761 10,
762 0,
763 59,
764 0,
765 "IMAGE"
766 ],
767 [
768 78,
769 12,
770 0,
771 59,
772 1,
773 "IMAGE"
774 ],
775 [
776 79,
777 59,
778 0,
779 11,
780 0,
781 "IMAGE"
782 ],
783 [
784 102,
785 73,
786 0,
787 72,
788 0,
789 "STRING"
790 ],
791 [
792 104,
793 71,
794 0,
795 72,
796 1,
797 "STRING"
798 ],
799 [
800 106,
801 72,
802 0,
803 33,
804 2,
805 "STRING"
806 ],
807 [
808 113,
809 79,
810 0,
811 23,
812 0,
813 "VIDEO"
814 ],
815 [
816 115,
817 19,
818 0,
819 49,
820 0,
821 "IMAGE"
822 ],
823 [
824 116,
825 19,
826 0,
827 79,
828 1,
829 "IMAGE"
830 ],
831 [
832 117,
833 21,
834 0,
835 79,
836 0,
837 "IMAGE"
838 ]
839 ],
840 "groups": [],
841 "definitions": {
842 "subgraphs": [
843 {
844 "id": "319c5e46-36eb-4854-a39e-1291507505e2",
845 "version": 1,
846 "state": {
847 "lastGroupId": 0,
848 "lastNodeId": 79,
849 "lastLinkId": 117,
850 "lastRerouteId": 0
851 },
852 "revision": 0,
853 "config": [],
854 "name": "Image to Outpaint",
855 "inputNode": {
856 "id": -10,
857 "bounding": [
858 1590,
859 -144,
860 165.978515625,
861 88
862 ]
863 },
864 "outputNode": {
865 "id": -20,
866 "bounding": [
867 3815.7569739090827,
868 -157.0962556425554,
869 128,
870 68
871 ]
872 },
873 "inputs": [
874 {
875 "id": "928a183d-8b1d-4f04-b373-dce1c4517d68",
876 "name": "image",
877 "type": "IMAGE",
878 "linkIds": [
879 25,
880 76
881 ],
882 "localized_name": "image",
883 "pos": [
884 1731.978515625,
885 -120
886 ]
887 },
888 {
889 "id": "b50555aa-fdc1-45ad-b40b-0d7325d99a88",
890 "name": "a",
891 "type": "INT,FLOAT",
892 "linkIds": [
893 68
894 ],
895 "label": "expand_img_percent",
896 "pos": [
897 1731.978515625,
898 -100
899 ]
900 }
901 ],
902 "outputs": [
903 {
904 "id": "f473101e-20bc-4305-bd6c-99cddacffd9d",
905 "name": "IMAGE",
906 "type": "IMAGE",
907 "linkIds": [
908 38
909 ],
910 "localized_name": "IMAGE",
911 "pos": [
912 3839.7569739090827,
913 -133.0962556425554
914 ]
915 }
916 ],
917 "widgets": [],
918 "nodes": [
919 {
920 "id": 28,
921 "type": "SimpleMath+",
922 "pos": [
923 2410,
924 -360
925 ],
926 "size": [
927 300,
928 114
929 ],
930 "flags": [],
931 "order": 2,
932 "mode": 0,
933 "inputs": [
934 {
935 "localized_name": "a",
936 "name": "a",
937 "shape": 7,
938 "type": "INT,FLOAT",
939 "link": 28
940 },
941 {
942 "localized_name": "b",
943 "name": "b",
944 "shape": 7,
945 "type": "INT,FLOAT",
946 "link": 66
947 }
948 ],
949 "outputs": [
950 {
951 "localized_name": "INT",
952 "name": "INT",
953 "type": "INT",
954 "links": [
955 31,
956 32
957 ]
958 },
959 {
960 "localized_name": "FLOAT",
961 "name": "FLOAT",
962 "type": "FLOAT",
963 "links": null
964 }
965 ],
966 "title": "Calculate left/right pixel expand",
967 "properties": {
968 "Node name for S&R": "SimpleMath+",
969 "cnr_id": "comfyui_essentials",
970 "ver": "1.1.0"
971 },
972 "widgets_values": [
973 "(a * b) / 2"
974 ],
975 "widgets_values_named": {
976 "value": "(a * b) / 2"
977 }
978 },
979 {
980 "id": 32,
981 "type": "SimpleMath+",
982 "pos": [
983 2420,
984 -130
985 ],
986 "size": [
987 300,
988 114
989 ],
990 "flags": [],
991 "order": 3,
992 "mode": 0,
993 "inputs": [
994 {
995 "localized_name": "a",
996 "name": "a",
997 "shape": 7,
998 "type": "INT,FLOAT",
999 "link": 35
1000 },
1001 {
1002 "localized_name": "b",
1003 "name": "b",
1004 "shape": 7,
1005 "type": "INT,FLOAT",
1006 "link": 65
1007 }
1008 ],
1009 "outputs": [
1010 {
1011 "localized_name": "INT",
1012 "name": "INT",
1013 "type": "INT",
1014 "links": [
1015 36,
1016 37
1017 ]
1018 },
1019 {
1020 "localized_name": "FLOAT",
1021 "name": "FLOAT",
1022 "type": "FLOAT",
1023 "links": null
1024 }
1025 ],
1026 "title": "Calculate top/bottom pixel expand",
1027 "properties": {
1028 "Node name for S&R": "SimpleMath+",
1029 "cnr_id": "comfyui_essentials",
1030 "ver": "1.1.0"
1031 },
1032 "widgets_values": [
1033 "(a * b) / 2"
1034 ],
1035 "widgets_values_named": {
1036 "value": "(a * b) / 2"
1037 }
1038 },
1039 {
1040 "id": 47,
1041 "type": "SimpleMath+",
1042 "pos": [
1043 2420,
1044 30
1045 ],
1046 "size": [
1047 300,
1048 114
1049 ],
1050 "flags": [],
1051 "order": 5,
1052 "mode": 0,
1053 "inputs": [
1054 {
1055 "localized_name": "a",
1056 "name": "a",
1057 "shape": 7,
1058 "type": "INT,FLOAT",
1059 "link": 68
1060 },
1061 {
1062 "localized_name": "b",
1063 "name": "b",
1064 "shape": 7,
1065 "type": "INT,FLOAT",
1066 "link": null
1067 }
1068 ],
1069 "outputs": [
1070 {
1071 "localized_name": "INT",
1072 "name": "INT",
1073 "type": "INT",
1074 "links": [
1075 65,
1076 66
1077 ]
1078 },
1079 {
1080 "localized_name": "FLOAT",
1081 "name": "FLOAT",
1082 "type": "FLOAT",
1083 "links": null
1084 }
1085 ],
1086 "title": "Calculate % to decimal value",
1087 "properties": {
1088 "Node name for S&R": "SimpleMath+",
1089 "cnr_id": "comfyui_essentials",
1090 "ver": "1.1.0"
1091 },
1092 "widgets_values": [
1093 "a / 100"
1094 ],
1095 "widgets_values_named": {
1096 "value": "a / 100"
1097 }
1098 },
1099 {
1100 "id": 27,
1101 "type": "GetImageSize",
1102 "pos": [
1103 2110,
1104 -360
1105 ],
1106 "size": [
1107 225,
1108 98
1109 ],
1110 "flags": [],
1111 "order": 1,
1112 "mode": 0,
1113 "inputs": [
1114 {
1115 "localized_name": "image",
1116 "name": "image",
1117 "type": "IMAGE",
1118 "link": 77
1119 }
1120 ],
1121 "outputs": [
1122 {
1123 "localized_name": "width",
1124 "name": "width",
1125 "type": "INT",
1126 "links": [
1127 28
1128 ]
1129 },
1130 {
1131 "localized_name": "height",
1132 "name": "height",
1133 "type": "INT",
1134 "links": [
1135 35
1136 ]
1137 },
1138 {
1139 "localized_name": "batch_size",
1140 "name": "batch_size",
1141 "type": "INT",
1142 "links": null
1143 }
1144 ],
1145 "properties": {
1146 "Node name for S&R": "GetImageSize",
1147 "cnr_id": "comfy-core",
1148 "ver": "0.5.1"
1149 }
1150 },
1151 {
1152 "id": 77,
1153 "type": "ImageScaleToTotalPixels",
1154 "pos": [
1155 1820,
1156 -360
1157 ],
1158 "size": [
1159 225,
1160 138
1161 ],
1162 "flags": [],
1163 "order": 6,
1164 "mode": 0,
1165 "inputs": [
1166 {
1167 "localized_name": "image",
1168 "name": "image",
1169 "type": "IMAGE",
1170 "link": 76
1171 }
1172 ],
1173 "outputs": [
1174 {
1175 "localized_name": "IMAGE",
1176 "name": "IMAGE",
1177 "type": "IMAGE",
1178 "links": [
1179 77
1180 ]
1181 }
1182 ],
1183 "properties": {
1184 "Node name for S&R": "ImageScaleToTotalPixels",
1185 "cnr_id": "comfy-core",
1186 "ver": "0.5.1"
1187 },
1188 "widgets_values": [
1189 "lanczos",
1190 1,
1191 1
1192 ],
1193 "widgets_values_named": {
1194 "upscale_method": "lanczos",
1195 "megapixels": 1,
1196 "resolution_steps": 1
1197 }
1198 },
1199 {
1200 "id": 45,
1201 "type": "PreviewImage",
1202 "pos": [
1203 3250,
1204 -280
1205 ],
1206 "size": [
1207 460,
1208 290
1209 ],
1210 "flags": [],
1211 "order": 4,
1212 "mode": 0,
1213 "inputs": [
1214 {
1215 "localized_name": "images",
1216 "name": "images",
1217 "type": "IMAGE",
1218 "link": 60
1219 }
1220 ],
1221 "outputs": [
1222 {
1223 "localized_name": "images",
1224 "name": "images",
1225 "type": "IMAGE",
1226 "links": null
1227 }
1228 ],
1229 "properties": {
1230 "Node name for S&R": "PreviewImage",
1231 "cnr_id": "comfy-core",
1232 "ver": "0.5.1"
1233 }
1234 },
1235 {
1236 "id": 24,
1237 "type": "ImagePadForOutpaint",
1238 "pos": [
1239 2860,
1240 -280
1241 ],
1242 "size": [
1243 280,
1244 214
1245 ],
1246 "flags": [],
1247 "order": 0,
1248 "mode": 0,
1249 "inputs": [
1250 {
1251 "localized_name": "image",
1252 "name": "image",
1253 "type": "IMAGE",
1254 "link": 25
1255 },
1256 {
1257 "localized_name": "left",
1258 "name": "left",
1259 "type": "INT",
1260 "widget": {
1261 "name": "left"
1262 },
1263 "link": 31
1264 },
1265 {
1266 "localized_name": "top",
1267 "name": "top",
1268 "type": "INT",
1269 "widget": {
1270 "name": "top"
1271 },
1272 "link": 36
1273 },
1274 {
1275 "localized_name": "right",
1276 "name": "right",
1277 "type": "INT",
1278 "widget": {
1279 "name": "right"
1280 },
1281 "link": 32
1282 },
1283 {
1284 "localized_name": "bottom",
1285 "name": "bottom",
1286 "type": "INT",
1287 "widget": {
1288 "name": "bottom"
1289 },
1290 "link": 37
1291 }
1292 ],
1293 "outputs": [
1294 {
1295 "localized_name": "IMAGE",
1296 "name": "IMAGE",
1297 "type": "IMAGE",
1298 "links": [
1299 38,
1300 60
1301 ]
1302 },
1303 {
1304 "localized_name": "MASK",
1305 "name": "MASK",
1306 "type": "MASK",
1307 "links": []
1308 }
1309 ],
1310 "properties": {
1311 "Node name for S&R": "ImagePadForOutpaint",
1312 "cnr_id": "comfy-core",
1313 "ver": "0.5.1"
1314 },
1315 "widgets_values": [
1316 0,
1317 0,
1318 0,
1319 0,
1320 40
1321 ],
1322 "widgets_values_named": {
1323 "left": 0,
1324 "top": 0,
1325 "right": 0,
1326 "bottom": 0,
1327 "feathering": 40
1328 }
1329 }
1330 ],
1331 "groups": [],
1332 "links": [
1333 {
1334 "id": 28,
1335 "origin_id": 27,
1336 "origin_slot": 0,
1337 "target_id": 28,
1338 "target_slot": 0,
1339 "type": "INT"
1340 },
1341 {
1342 "id": 66,
1343 "origin_id": 47,
1344 "origin_slot": 0,
1345 "target_id": 28,
1346 "target_slot": 1,
1347 "type": "INT"
1348 },
1349 {
1350 "id": 35,
1351 "origin_id": 27,
1352 "origin_slot": 1,
1353 "target_id": 32,
1354 "target_slot": 0,
1355 "type": "INT"
1356 },
1357 {
1358 "id": 65,
1359 "origin_id": 47,
1360 "origin_slot": 0,
1361 "target_id": 32,
1362 "target_slot": 1,
1363 "type": "INT"
1364 },
1365 {
1366 "id": 31,
1367 "origin_id": 28,
1368 "origin_slot": 0,
1369 "target_id": 24,
1370 "target_slot": 1,
1371 "type": "INT"
1372 },
1373 {
1374 "id": 36,
1375 "origin_id": 32,
1376 "origin_slot": 0,
1377 "target_id": 24,
1378 "target_slot": 2,
1379 "type": "INT"
1380 },
1381 {
1382 "id": 32,
1383 "origin_id": 28,
1384 "origin_slot": 0,
1385 "target_id": 24,
1386 "target_slot": 3,
1387 "type": "INT"
1388 },
1389 {
1390 "id": 37,
1391 "origin_id": 32,
1392 "origin_slot": 0,
1393 "target_id": 24,
1394 "target_slot": 4,
1395 "type": "INT"
1396 },
1397 {
1398 "id": 60,
1399 "origin_id": 24,
1400 "origin_slot": 0,
1401 "target_id": 45,
1402 "target_slot": 0,
1403 "type": "IMAGE"
1404 },
1405 {
1406 "id": 25,
1407 "origin_id": -10,
1408 "origin_slot": 0,
1409 "target_id": 24,
1410 "target_slot": 0,
1411 "type": "IMAGE"
1412 },
1413 {
1414 "id": 38,
1415 "origin_id": 24,
1416 "origin_slot": 0,
1417 "target_id": -20,
1418 "target_slot": 0,
1419 "type": "IMAGE"
1420 },
1421 {
1422 "id": 68,
1423 "origin_id": -10,
1424 "origin_slot": 1,
1425 "target_id": 47,
1426 "target_slot": 0,
1427 "type": "INT,FLOAT"
1428 },
1429 {
1430 "id": 76,
1431 "origin_id": -10,
1432 "origin_slot": 0,
1433 "target_id": 77,
1434 "target_slot": 0,
1435 "type": "IMAGE"
1436 },
1437 {
1438 "id": 77,
1439 "origin_id": 77,
1440 "origin_slot": 0,
1441 "target_id": 27,
1442 "target_slot": 0,
1443 "type": "IMAGE"
1444 }
1445 ],
1446 "extra": {
1447 "workflowRendererVersion": "LG"
1448 }
1449 },
1450 {
1451 "id": "afac6e36-94b5-4d13-ae22-66f87405e994",
1452 "version": 1,
1453 "state": {
1454 "lastGroupId": 0,
1455 "lastNodeId": 79,
1456 "lastLinkId": 117,
1457 "lastRerouteId": 0
1458 },
1459 "revision": 0,
1460 "config": [],
1461 "name": "Batch Images",
1462 "inputNode": {
1463 "id": -10,
1464 "bounding": [
1465 460,
1466 460,
1467 120,
1468 80
1469 ]
1470 },
1471 "outputNode": {
1472 "id": -20,
1473 "bounding": [
1474 1170,
1475 470,
1476 120,
1477 60
1478 ]
1479 },
1480 "inputs": [
1481 {
1482 "id": "a0729ab6-ea03-4b76-bbfc-531bcf3369bb",
1483 "name": "image1",
1484 "type": "IMAGE",
1485 "linkIds": [
1486 17,
1487 77
1488 ],
1489 "localized_name": "image1",
1490 "pos": [
1491 560,
1492 480
1493 ]
1494 },
1495 {
1496 "id": "41e74794-4a42-4041-89d1-7601e37c6cea",
1497 "name": "image",
1498 "type": "IMAGE",
1499 "linkIds": [
1500 14
1501 ],
1502 "localized_name": "image",
1503 "pos": [
1504 560,
1505 500
1506 ]
1507 }
1508 ],
1509 "outputs": [
1510 {
1511 "id": "81cd91b6-fd00-49c7-a8ca-a6f31dd9ac19",
1512 "name": "IMAGE",
1513 "type": "IMAGE",
1514 "linkIds": [
1515 78
1516 ],
1517 "localized_name": "IMAGE",
1518 "pos": [
1519 1190,
1520 490
1521 ]
1522 }
1523 ],
1524 "widgets": [],
1525 "nodes": [
1526 {
1527 "id": 16,
1528 "type": "GetImageSize",
1529 "pos": [
1530 650,
1531 350
1532 ],
1533 "size": [
1534 180,
1535 70
1536 ],
1537 "flags": [],
1538 "order": 1,
1539 "mode": 0,
1540 "inputs": [
1541 {
1542 "localized_name": "image",
1543 "name": "image",
1544 "type": "IMAGE",
1545 "link": 17
1546 }
1547 ],
1548 "outputs": [
1549 {
1550 "localized_name": "width",
1551 "name": "width",
1552 "type": "INT",
1553 "links": [
1554 15
1555 ]
1556 },
1557 {
1558 "localized_name": "height",
1559 "name": "height",
1560 "type": "INT",
1561 "links": [
1562 16
1563 ]
1564 },
1565 {
1566 "localized_name": "batch_size",
1567 "name": "batch_size",
1568 "type": "INT",
1569 "links": null
1570 }
1571 ],
1572 "properties": {
1573 "Node name for S&R": "GetImageSize",
1574 "cnr_id": "comfy-core",
1575 "ver": "0.5.1"
1576 }
1577 },
1578 {
1579 "id": 15,
1580 "type": "ResizeAndPadImage",
1581 "pos": [
1582 640,
1583 550
1584 ],
1585 "size": [
1586 210,
1587 130
1588 ],
1589 "flags": [],
1590 "order": 0,
1591 "mode": 0,
1592 "inputs": [
1593 {
1594 "localized_name": "image",
1595 "name": "image",
1596 "type": "IMAGE",
1597 "link": 14
1598 },
1599 {
1600 "localized_name": "target_width",
1601 "name": "target_width",
1602 "type": "INT",
1603 "widget": {
1604 "name": "target_width"
1605 },
1606 "link": 15
1607 },
1608 {
1609 "localized_name": "target_height",
1610 "name": "target_height",
1611 "type": "INT",
1612 "widget": {
1613 "name": "target_height"
1614 },
1615 "link": 16
1616 }
1617 ],
1618 "outputs": [
1619 {
1620 "localized_name": "IMAGE",
1621 "name": "IMAGE",
1622 "type": "IMAGE",
1623 "links": [
1624 79
1625 ]
1626 }
1627 ],
1628 "properties": {
1629 "Node name for S&R": "ResizeAndPadImage",
1630 "cnr_id": "comfy-core",
1631 "ver": "0.5.1"
1632 },
1633 "widgets_values": [
1634 512,
1635 512,
1636 "black",
1637 "area"
1638 ],
1639 "widgets_values_named": {
1640 "target_width": 512,
1641 "target_height": 512,
1642 "padding_color": "black",
1643 "interpolation": "area"
1644 }
1645 },
1646 {
1647 "id": 78,
1648 "type": "BatchImagesNode",
1649 "pos": [
1650 940,
1651 470
1652 ],
1653 "size": [
1654 170,
1655 90
1656 ],
1657 "flags": [],
1658 "order": 2,
1659 "mode": 0,
1660 "inputs": [
1661 {
1662 "label": "image0",
1663 "localized_name": "image0",
1664 "name": "images.image0",
1665 "type": "IMAGE",
1666 "link": 77
1667 },
1668 {
1669 "localized_name": "image1",
1670 "name": "images.image1",
1671 "shape": 7,
1672 "type": "IMAGE",
1673 "link": 79
1674 },
1675 {
1676 "localized_name": "image2",
1677 "name": "images.image2",
1678 "shape": 7,
1679 "type": "IMAGE",
1680 "link": null
1681 }
1682 ],
1683 "outputs": [
1684 {
1685 "localized_name": "IMAGE",
1686 "name": "IMAGE",
1687 "type": "IMAGE",
1688 "links": [
1689 78
1690 ]
1691 }
1692 ],
1693 "properties": {
1694 "Node name for S&R": "BatchImagesNode",
1695 "cnr_id": "comfy-core",
1696 "ver": "0.9.2"
1697 }
1698 }
1699 ],
1700 "groups": [],
1701 "links": [
1702 {
1703 "id": 15,
1704 "origin_id": 16,
1705 "origin_slot": 0,
1706 "target_id": 15,
1707 "target_slot": 1,
1708 "type": "INT"
1709 },
1710 {
1711 "id": 16,
1712 "origin_id": 16,
1713 "origin_slot": 1,
1714 "target_id": 15,
1715 "target_slot": 2,
1716 "type": "INT"
1717 },
1718 {
1719 "id": 17,
1720 "origin_id": -10,
1721 "origin_slot": 0,
1722 "target_id": 16,
1723 "target_slot": 0,
1724 "type": "IMAGE"
1725 },
1726 {
1727 "id": 14,
1728 "origin_id": -10,
1729 "origin_slot": 1,
1730 "target_id": 15,
1731 "target_slot": 0,
1732 "type": "IMAGE"
1733 },
1734 {
1735 "id": 77,
1736 "origin_id": -10,
1737 "origin_slot": 0,
1738 "target_id": 78,
1739 "target_slot": 0,
1740 "type": "IMAGE"
1741 },
1742 {
1743 "id": 78,
1744 "origin_id": 78,
1745 "origin_slot": 0,
1746 "target_id": -20,
1747 "target_slot": 0,
1748 "type": "IMAGE"
1749 },
1750 {
1751 "id": 79,
1752 "origin_id": 15,
1753 "origin_slot": 0,
1754 "target_id": 78,
1755 "target_slot": 1,
1756 "type": "IMAGE"
1757 }
1758 ],
1759 "extra": {
1760 "workflowRendererVersion": "LG"
1761 }
1762 }
1763 ]
1764 },
1765 "config": [],
1766 "extra": {
1767 "ds": {
1768 "scale": 0.4406997469281822,
1769 "offset": [
1770 97.77024129764987,
1771 674.5674845517191
1772 ]
1773 },
1774 "frontendVersion": "1.52.5",
1775 "workflowRendererVersion": "LG",
1776 "VHS_latentpreview": false,
1777 "VHS_latentpreviewrate": 0,
1778 "VHS_MetadataImage": true,
1779 "VHS_KeepIntermediate": true
1780 },
1781 "version": 0.4
1782}