ComfyPilotComfyPilot
工作流 / 角色与时尚 / 人物肖像重新打光
人物肖像重新打光

人物肖像重新打光

Character Portrait Relighting

上传角色肖像,在保持角色一致性的同时创建多种电影级光照条件。

角色与时尚 11 个节点 1 个输入 27 次使用 ComfyUI ≥ 0.16.0 hellorob 15 KB

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

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

节点构成

GeminiImage2Node × 5
SaveImage × 5
LoadImage × 1

官方标注的模型

Nano Banana Pro

工作流 JSON

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

1{
2 "id": "4b83b519-93f1-4d96-9751-a88c00991ccf",
3 "revision": 0,
4 "last_node_id": 185,
5 "last_link_id": 310,
6 "nodes": [
7 {
8 "id": 124,
9 "type": "LoadImage",
10 "pos": [
11 -800.0000058139651,
12 1700.0000741136582
13 ],
14 "size": [
15 600,
16 880
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "IMAGE",
25 "type": "IMAGE",
26 "links": [
27 214,
28 245,
29 253,
30 279,
31 299
32 ]
33 },
34 {
35 "name": "MASK",
36 "type": "MASK",
37 "links": null
38 }
39 ],
40 "properties": {
41 "Node name for S&R": "LoadImage",
42 "cnr_id": "comfy-core",
43 "ver": "0.8.2",
44 "enableTabs": false,
45 "hasSecondTab": false,
46 "secondTabOffset": 80,
47 "secondTabText": "Send Back",
48 "secondTabWidth": 65,
49 "tabWidth": 65,
50 "tabXOffset": 10
51 },
52 "widgets_values": [
53 "silver_hand.png",
54 "image"
55 ],
56 "color": "#232",
57 "bgcolor": "#353"
58 },
59 {
60 "id": 136,
61 "type": "GeminiImage2Node",
62 "pos": [
63 449.99999116685603,
64 319.9999773301662
65 ],
66 "size": [
67 450,
68 560
69 ],
70 "flags": [],
71 "order": 1,
72 "mode": 0,
73 "inputs": [
74 {
75 "name": "images",
76 "shape": 7,
77 "type": "IMAGE",
78 "link": 214
79 },
80 {
81 "name": "files",
82 "shape": 7,
83 "type": "GEMINI_INPUT_FILES",
84 "link": null
85 }
86 ],
87 "outputs": [
88 {
89 "name": "IMAGE",
90 "type": "IMAGE",
91 "links": [
92 236
93 ]
94 },
95 {
96 "name": "STRING",
97 "type": "STRING",
98 "links": null
99 }
100 ],
101 "properties": {
102 "Node name for S&R": "GeminiImage2Node"
103 },
104 "widgets_values": [
105 "Maintain the identity of input image 1, modify the shadows to match the following lighting style: dual rim backlight, no front key, twin hard lights from behind left and right, subject silhouetted at center, glowing edge separation on both sides, dramatic dark fill",
106 "Nano Banana 2 (Gemini 3.1 Flash Image)",
107 194380522768098,
108 "randomize",
109 "auto",
110 "1K",
111 "IMAGE+TEXT",
112 "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."
113 ],
114 "color": "#432",
115 "bgcolor": "#653"
116 },
117 {
118 "id": 138,
119 "type": "SaveImage",
120 "pos": [
121 979.9998632434204,
122 319.9999773301662
123 ],
124 "size": [
125 530,
126 590
127 ],
128 "flags": [],
129 "order": 6,
130 "mode": 0,
131 "inputs": [
132 {
133 "name": "images",
134 "type": "IMAGE",
135 "link": 236
136 }
137 ],
138 "outputs": [],
139 "properties": {
140 "Node name for S&R": "SaveImage",
141 "cnr_id": "comfy-core",
142 "ver": "0.8.2",
143 "enableTabs": false,
144 "hasSecondTab": false,
145 "secondTabOffset": 80,
146 "secondTabText": "Send Back",
147 "secondTabWidth": 65,
148 "tabWidth": 65,
149 "tabXOffset": 10
150 },
151 "widgets_values": [
152 "ComfyUI-nb_2"
153 ]
154 },
155 {
156 "id": 150,
157 "type": "GeminiImage2Node",
158 "pos": [
159 449.99999116685603,
160 1009.9999722407873
161 ],
162 "size": [
163 450,
164 560
165 ],
166 "flags": [],
167 "order": 2,
168 "mode": 0,
169 "inputs": [
170 {
171 "name": "images",
172 "shape": 7,
173 "type": "IMAGE",
174 "link": 245
175 },
176 {
177 "name": "files",
178 "shape": 7,
179 "type": "GEMINI_INPUT_FILES",
180 "link": null
181 }
182 ],
183 "outputs": [
184 {
185 "name": "IMAGE",
186 "type": "IMAGE",
187 "links": [
188 247
189 ]
190 },
191 {
192 "name": "STRING",
193 "type": "STRING",
194 "links": null
195 }
196 ],
197 "properties": {
198 "Node name for S&R": "GeminiImage2Node"
199 },
200 "widgets_values": [
201 "Maintain the identity of input image 1, modify the scene lighting and shadows to match the following lighting style: Hard top-down overhead key, harsh light directly above, deep under-eye and jaw shadows, pronounced brow ridge highlight, strong nose shadow pointing straight down, theatrical and sculpted",
202 "Nano Banana 2 (Gemini 3.1 Flash Image)",
203 31312554729959,
204 "randomize",
205 "auto",
206 "1K",
207 "IMAGE+TEXT",
208 "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."
209 ],
210 "color": "#432",
211 "bgcolor": "#653"
212 },
213 {
214 "id": 152,
215 "type": "SaveImage",
216 "pos": [
217 979.9998632434204,
218 1009.9999722407873
219 ],
220 "size": [
221 530,
222 590
223 ],
224 "flags": [],
225 "order": 7,
226 "mode": 0,
227 "inputs": [
228 {
229 "name": "images",
230 "type": "IMAGE",
231 "link": 247
232 }
233 ],
234 "outputs": [],
235 "properties": {
236 "Node name for S&R": "SaveImage",
237 "cnr_id": "comfy-core",
238 "ver": "0.8.2",
239 "enableTabs": false,
240 "hasSecondTab": false,
241 "secondTabOffset": 80,
242 "secondTabText": "Send Back",
243 "secondTabWidth": 65,
244 "tabWidth": 65,
245 "tabXOffset": 10
246 },
247 "widgets_values": [
248 "ComfyUI-nb_2"
249 ]
250 },
251 {
252 "id": 156,
253 "type": "GeminiImage2Node",
254 "pos": [
255 449.99999116685603,
256 1700.0000741136582
257 ],
258 "size": [
259 450,
260 560
261 ],
262 "flags": [],
263 "order": 3,
264 "mode": 0,
265 "inputs": [
266 {
267 "name": "images",
268 "shape": 7,
269 "type": "IMAGE",
270 "link": 253
271 },
272 {
273 "name": "files",
274 "shape": 7,
275 "type": "GEMINI_INPUT_FILES",
276 "link": null
277 }
278 ],
279 "outputs": [
280 {
281 "name": "IMAGE",
282 "type": "IMAGE",
283 "links": [
284 255
285 ]
286 },
287 {
288 "name": "STRING",
289 "type": "STRING",
290 "links": null
291 }
292 ],
293 "properties": {
294 "Node name for S&R": "GeminiImage2Node"
295 },
296 "widgets_values": [
297 "Maintain the identity of input image 1, modify the scene lighting and shadows to match the following lighting style: Split lighting, hard side key at 90°, one half face fully lit, other half near-black, sharp nose shadow line, minimal fill.",
298 "Nano Banana 2 (Gemini 3.1 Flash Image)",
299 337125210981716,
300 "randomize",
301 "auto",
302 "1K",
303 "IMAGE+TEXT",
304 "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."
305 ],
306 "color": "#432",
307 "bgcolor": "#653"
308 },
309 {
310 "id": 158,
311 "type": "SaveImage",
312 "pos": [
313 979.9998632434204,
314 1700.0000741136582
315 ],
316 "size": [
317 530,
318 590
319 ],
320 "flags": [],
321 "order": 8,
322 "mode": 0,
323 "inputs": [
324 {
325 "name": "images",
326 "type": "IMAGE",
327 "link": 255
328 }
329 ],
330 "outputs": [],
331 "properties": {
332 "Node name for S&R": "SaveImage",
333 "cnr_id": "comfy-core",
334 "ver": "0.8.2",
335 "enableTabs": false,
336 "hasSecondTab": false,
337 "secondTabOffset": 80,
338 "secondTabText": "Send Back",
339 "secondTabWidth": 65,
340 "tabWidth": 65,
341 "tabXOffset": 10
342 },
343 "widgets_values": [
344 "ComfyUI-nb_2"
345 ]
346 },
347 {
348 "id": 168,
349 "type": "GeminiImage2Node",
350 "pos": [
351 449.99999116685603,
352 2389.9998550997802
353 ],
354 "size": [
355 450,
356 560
357 ],
358 "flags": [],
359 "order": 4,
360 "mode": 0,
361 "inputs": [
362 {
363 "name": "images",
364 "shape": 7,
365 "type": "IMAGE",
366 "link": 279
367 },
368 {
369 "name": "files",
370 "shape": 7,
371 "type": "GEMINI_INPUT_FILES",
372 "link": null
373 }
374 ],
375 "outputs": [
376 {
377 "name": "IMAGE",
378 "type": "IMAGE",
379 "links": [
380 281
381 ]
382 },
383 {
384 "name": "STRING",
385 "type": "STRING",
386 "links": null
387 }
388 ],
389 "properties": {
390 "Node name for S&R": "GeminiImage2Node"
391 },
392 "widgets_values": [
393 "Maintain the identity of input image 1, modify the scene lighting and shadows to match the following lighting style: Rembrandt, side key slightly above, deep falloff, subtle rim separation.",
394 "Nano Banana 2 (Gemini 3.1 Flash Image)",
395 95962613515780,
396 "randomize",
397 "auto",
398 "1K",
399 "IMAGE+TEXT",
400 "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."
401 ],
402 "color": "#432",
403 "bgcolor": "#653"
404 },
405 {
406 "id": 170,
407 "type": "SaveImage",
408 "pos": [
409 979.9998632434204,
410 2389.9998550997802
411 ],
412 "size": [
413 530,
414 590
415 ],
416 "flags": [],
417 "order": 9,
418 "mode": 0,
419 "inputs": [
420 {
421 "name": "images",
422 "type": "IMAGE",
423 "link": 281
424 }
425 ],
426 "outputs": [],
427 "properties": {
428 "Node name for S&R": "SaveImage",
429 "cnr_id": "comfy-core",
430 "ver": "0.8.2",
431 "enableTabs": false,
432 "hasSecondTab": false,
433 "secondTabOffset": 80,
434 "secondTabText": "Send Back",
435 "secondTabWidth": 65,
436 "tabWidth": 65,
437 "tabXOffset": 10
438 },
439 "widgets_values": [
440 "ComfyUI-nb_2"
441 ]
442 },
443 {
444 "id": 180,
445 "type": "GeminiImage2Node",
446 "pos": [
447 449.99999116685603,
448 3089.9999646497795
449 ],
450 "size": [
451 450,
452 560
453 ],
454 "flags": [],
455 "order": 5,
456 "mode": 0,
457 "inputs": [
458 {
459 "name": "images",
460 "shape": 7,
461 "type": "IMAGE",
462 "link": 299
463 },
464 {
465 "name": "files",
466 "shape": 7,
467 "type": "GEMINI_INPUT_FILES",
468 "link": null
469 }
470 ],
471 "outputs": [
472 {
473 "name": "IMAGE",
474 "type": "IMAGE",
475 "links": [
476 300
477 ]
478 },
479 {
480 "name": "STRING",
481 "type": "STRING",
482 "links": null
483 }
484 ],
485 "properties": {
486 "Node name for S&R": "GeminiImage2Node"
487 },
488 "widgets_values": [
489 "Maintain the identity of input image 1, modify the scene lighting and shadows to match the following lighting style: Motivated practical, off-axis kicker mimicking an environmental source, strong directional spill, naturalistic shadow logic, atmospheric fill.",
490 "Nano Banana 2 (Gemini 3.1 Flash Image)",
491 16095681705317,
492 "randomize",
493 "auto",
494 "1K",
495 "IMAGE+TEXT",
496 "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."
497 ],
498 "color": "#432",
499 "bgcolor": "#653"
500 },
501 {
502 "id": 181,
503 "type": "SaveImage",
504 "pos": [
505 979.9998632434204,
506 3089.9999646497795
507 ],
508 "size": [
509 530,
510 590
511 ],
512 "flags": [],
513 "order": 10,
514 "mode": 0,
515 "inputs": [
516 {
517 "name": "images",
518 "type": "IMAGE",
519 "link": 300
520 }
521 ],
522 "outputs": [],
523 "properties": {
524 "Node name for S&R": "SaveImage",
525 "cnr_id": "comfy-core",
526 "ver": "0.8.2",
527 "enableTabs": false,
528 "hasSecondTab": false,
529 "secondTabOffset": 80,
530 "secondTabText": "Send Back",
531 "secondTabWidth": 65,
532 "tabWidth": 65,
533 "tabXOffset": 10
534 },
535 "widgets_values": [
536 "ComfyUI-nb_2"
537 ]
538 }
539 ],
540 "links": [
541 [
542 214,
543 124,
544 0,
545 136,
546 0,
547 "IMAGE"
548 ],
549 [
550 236,
551 136,
552 0,
553 138,
554 0,
555 "IMAGE"
556 ],
557 [
558 245,
559 124,
560 0,
561 150,
562 0,
563 "IMAGE"
564 ],
565 [
566 247,
567 150,
568 0,
569 152,
570 0,
571 "IMAGE"
572 ],
573 [
574 253,
575 124,
576 0,
577 156,
578 0,
579 "IMAGE"
580 ],
581 [
582 255,
583 156,
584 0,
585 158,
586 0,
587 "IMAGE"
588 ],
589 [
590 279,
591 124,
592 0,
593 168,
594 0,
595 "IMAGE"
596 ],
597 [
598 281,
599 168,
600 0,
601 170,
602 0,
603 "IMAGE"
604 ],
605 [
606 299,
607 124,
608 0,
609 180,
610 0,
611 "IMAGE"
612 ],
613 [
614 300,
615 180,
616 0,
617 181,
618 0,
619 "IMAGE"
620 ]
621 ],
622 "groups": [],
623 "config": [],
624 "extra": {
625 "ds": {
626 "scale": 0.3138428376721007,
627 "offset": [
628 2557.3781466347787,
629 -274.0305683077087
630 ]
631 },
632 "frontendVersion": "1.41.13",
633 "linearData": {
634 "inputs": [
635 [
636 "124",
637 "image"
638 ]
639 ],
640 "outputs": [
641 "138",
642 "152",
643 "158",
644 "170",
645 "181"
646 ]
647 },
648 "VHS_KeepIntermediate": true,
649 "VHS_MetadataImage": true,
650 "VHS_latentpreview": false,
651 "VHS_latentpreviewrate": 0,
652 "linearMode": false
653 },
654 "version": 0.4
655}