ComfyPilotComfyPilot
工作流 / 图像 / FLUX 3 Image Klein:图像编辑
FLUX 3 Image Klein:图像编辑

FLUX 3 Image Klein:图像编辑

FLUX 3 Image Klein: Image Edit

通过提供一个输入图像和两个文本提示,使用 FLUX 3 Image Klein 编辑现有图像,生成一个精修输出以及并排对比视图。非常适合在保留原始构图的前提下进行针对性修饰、风格调整和细节修正。

图像 24 个节点 1 个输入 956 次使用 ComfyUI ≥ 0.41.0 ComfyUI 37 KB

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

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

需要的权重

这个工作流引用了 4 个权重文件,其中 2 个能在本站模型库里找到。

flux2-vae.safetensors 在模型库查看
flux3-image-klein-base-int8-convrot.safetensors 模型库暂未收录
qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors 模型库暂未收录
qwen3vl_4b_int8_convrot.safetensors 在模型库查看

节点构成

MarkdownNote × 3
CLIPLoader × 2
CLIPTextEncode × 2
PreviewAny × 2
VAELoader × 1
KSampler × 1
VAEDecode × 1
SaveImage × 1
ReferenceMultiLatent × 1
ImageCompare × 1
EmptyFlux2LatentImage × 1
TextGenerate × 1
PrimitiveStringMultiline × 1
Flux3LayoutPrompt × 1
BatchImagesNode × 1
ComfySwitchNode × 1

官方标注的模型

FLUX 3 Image

工作流 JSON

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

1{
2 "id": "0ae2b50b-b07a-4465-bb7c-d8fe58e8e0ac",
3 "revision": 0,
4 "last_node_id": 61,
5 "last_link_id": 84,
6 "nodes": [
7 {
8 "id": 2,
9 "type": "CLIPLoader",
10 "pos": [
11 -100,
12 20
13 ],
14 "size": [
15 440,
16 120
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "CLIP",
25 "type": "CLIP",
26 "slot_index": 0,
27 "links": [
28 43,
29 81
30 ]
31 }
32 ],
33 "properties": {
34 "Node name for S&R": "CLIPLoader",
35 "models": [
36 {
37 "name": "qwen3vl_4b_int8_convrot.safetensors",
38 "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3vl_4b_int8_convrot.safetensors",
39 "directory": "text_encoders"
40 }
41 ]
42 },
43 "widgets_values": [
44 "qwen3vl_4b_int8_convrot.safetensors",
45 "flux3",
46 "default"
47 ],
48 "widgets_values_named": {
49 "clip_name": "qwen3vl_4b_int8_convrot.safetensors",
50 "type": "flux3",
51 "device": "default"
52 }
53 },
54 {
55 "id": 3,
56 "type": "VAELoader",
57 "pos": [
58 -100,
59 210
60 ],
61 "size": [
62 450,
63 70
64 ],
65 "flags": [],
66 "order": 1,
67 "mode": 0,
68 "inputs": [],
69 "outputs": [
70 {
71 "name": "VAE",
72 "type": "VAE",
73 "slot_index": 0,
74 "links": [
75 5,
76 25
77 ]
78 }
79 ],
80 "properties": {
81 "Node name for S&R": "VAELoader",
82 "models": [
83 {
84 "name": "flux2-vae.safetensors",
85 "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors",
86 "directory": "vae"
87 }
88 ]
89 },
90 "widgets_values": [
91 "flux2-vae.safetensors"
92 ],
93 "widgets_values_named": {
94 "vae_name": "flux2-vae.safetensors"
95 }
96 },
97 {
98 "id": 4,
99 "type": "CLIPTextEncode",
100 "pos": [
101 420,
102 -140
103 ],
104 "size": [
105 420,
106 220
107 ],
108 "flags": [],
109 "order": 18,
110 "mode": 0,
111 "inputs": [
112 {
113 "name": "clip",
114 "type": "CLIP",
115 "link": 43
116 },
117 {
118 "name": "text",
119 "type": "STRING",
120 "widget": {
121 "name": "text"
122 },
123 "link": 70
124 }
125 ],
126 "outputs": [
127 {
128 "name": "CONDITIONING",
129 "type": "CONDITIONING",
130 "slot_index": 0,
131 "links": [
132 20
133 ]
134 }
135 ],
136 "title": "Positive Prompt",
137 "properties": {
138 "Node name for S&R": "CLIPTextEncode"
139 },
140 "widgets_values": [
141 ""
142 ],
143 "widgets_values_named": {
144 "text": ""
145 }
146 },
147 {
148 "id": 7,
149 "type": "KSampler",
150 "pos": [
151 1440,
152 -170
153 ],
154 "size": [
155 340,
156 520
157 ],
158 "flags": [],
159 "order": 20,
160 "mode": 0,
161 "inputs": [
162 {
163 "name": "model",
164 "type": "MODEL",
165 "link": 83
166 },
167 {
168 "name": "positive",
169 "type": "CONDITIONING",
170 "link": 22
171 },
172 {
173 "name": "negative",
174 "type": "CONDITIONING",
175 "link": 23
176 },
177 {
178 "name": "latent_image",
179 "type": "LATENT",
180 "link": 24
181 }
182 ],
183 "outputs": [
184 {
185 "name": "LATENT",
186 "type": "LATENT",
187 "slot_index": 0,
188 "links": [
189 4
190 ]
191 }
192 ],
193 "properties": {
194 "Node name for S&R": "KSampler"
195 },
196 "widgets_values": [
197 341993890347040,
198 "randomize",
199 50,
200 1,
201 "euler",
202 "simple",
203 1
204 ],
205 "widgets_values_named": {
206 "seed": 341993890347040,
207 "control_after_generate": "randomize",
208 "steps": 50,
209 "cfg": 1,
210 "sampler_name": "euler",
211 "scheduler": "simple",
212 "denoise": 1
213 }
214 },
215 {
216 "id": 8,
217 "type": "VAEDecode",
218 "pos": [
219 1870,
220 -210
221 ],
222 "size": [
223 210,
224 50
225 ],
226 "flags": {
227 "collapsed": false
228 },
229 "order": 21,
230 "mode": 0,
231 "inputs": [
232 {
233 "name": "samples",
234 "type": "LATENT",
235 "link": 4
236 },
237 {
238 "name": "vae",
239 "type": "VAE",
240 "link": 5
241 }
242 ],
243 "outputs": [
244 {
245 "name": "IMAGE",
246 "type": "IMAGE",
247 "slot_index": 0,
248 "links": [
249 6
250 ]
251 }
252 ],
253 "properties": {
254 "Node name for S&R": "VAEDecode"
255 }
256 },
257 {
258 "id": 9,
259 "type": "SaveImage",
260 "pos": [
261 2160,
262 -210
263 ],
264 "size": [
265 530,
266 620
267 ],
268 "flags": [],
269 "order": 22,
270 "mode": 0,
271 "inputs": [
272 {
273 "name": "images",
274 "type": "IMAGE",
275 "link": 6
276 }
277 ],
278 "outputs": [
279 {
280 "name": "images",
281 "type": "IMAGE",
282 "links": [
283 30
284 ]
285 }
286 ],
287 "properties": {
288 "Node name for S&R": "SaveImage"
289 },
290 "widgets_values": [
291 "image_flux3_klein_distilled_image_edit"
292 ],
293 "widgets_values_named": {
294 "filename_prefix": "image_flux3_klein_distilled_image_edit"
295 }
296 },
297 {
298 "id": 10,
299 "type": "MarkdownNote",
300 "pos": [
301 -1080,
302 -210
303 ],
304 "size": [
305 360,
306 270
307 ],
308 "flags": [],
309 "order": 2,
310 "mode": 0,
311 "inputs": [],
312 "outputs": [],
313 "title": "Notes",
314 "properties": {
315 "Node name for S&R": "MarkdownNote"
316 },
317 "widgets_values": [
318 "## FLUX 3 Image Klein: editing\n\nSame files and sampler settings as text-to-image (50 steps, cfg 3.5, euler / simple).\n\n**References**: plug more input image to the `Set Reference Multi Latent` node, the first one is `<ref_image_0>` in the prompt, the next `<ref_image_1>`, and so on. Add every reference to **both** the positive and the negative, as the reference pipeline does.\n\n**Size**: the reference is scaled to ~1 MP here and the output latent takes its size. BFL's pipeline keeps references at native size (up to ~16 MP): raise the megapixels for more reference detail at a higher cost.\n\n**Prompting**: write a full caption of the result, with the edit folded in."
319 ],
320 "widgets_values_named": {
321 "text": "## FLUX 3 Image Klein: editing\n\nSame files and sampler settings as text-to-image (50 steps, cfg 3.5, euler / simple).\n\n**References**: plug more input image to the `Set Reference Multi Latent` node, the first one is `<ref_image_0>` in the prompt, the next `<ref_image_1>`, and so on. Add every reference to **both** the positive and the negative, as the reference pipeline does.\n\n**Size**: the reference is scaled to ~1 MP here and the output latent takes its size. BFL's pipeline keeps references at native size (up to ~16 MP): raise the megapixels for more reference detail at a higher cost.\n\n**Prompting**: write a full caption of the result, with the edit folded in."
322 },
323 "color": "#222",
324 "bgcolor": "#000"
325 },
326 {
327 "id": 17,
328 "type": "ReferenceMultiLatent",
329 "pos": [
330 980,
331 -140
332 ],
333 "size": [
334 280,
335 170
336 ],
337 "flags": [],
338 "order": 19,
339 "mode": 0,
340 "inputs": [
341 {
342 "name": "positive",
343 "type": "CONDITIONING",
344 "link": 20
345 },
346 {
347 "name": "negative",
348 "shape": 7,
349 "type": "CONDITIONING",
350 "link": 82
351 },
352 {
353 "name": "vae",
354 "shape": 7,
355 "type": "VAE",
356 "link": 25
357 },
358 {
359 "name": "images.image0",
360 "shape": 7,
361 "type": "IMAGE",
362 "link": 77
363 },
364 {
365 "name": "images.image1",
366 "shape": 7,
367 "type": "IMAGE",
368 "link": null
369 }
370 ],
371 "outputs": [
372 {
373 "name": "positive",
374 "type": "CONDITIONING",
375 "links": [
376 22
377 ]
378 },
379 {
380 "name": "negative",
381 "type": "CONDITIONING",
382 "links": [
383 23
384 ]
385 },
386 {
387 "name": "empty_latent",
388 "type": "LATENT",
389 "links": [
390 24
391 ]
392 }
393 ],
394 "properties": {
395 "Node name for S&R": "ReferenceMultiLatent"
396 },
397 "widgets_values": [
398 "resize",
399 1
400 ],
401 "widgets_values_named": {
402 "resolution": "resize",
403 "resolution.megapixels": 1
404 },
405 "color": "#322",
406 "bgcolor": "#533"
407 },
408 {
409 "id": 18,
410 "type": "ImageCompare",
411 "pos": [
412 2730,
413 -210
414 ],
415 "size": [
416 510,
417 620
418 ],
419 "flags": [],
420 "order": 23,
421 "mode": 0,
422 "inputs": [
423 {
424 "name": "image_a",
425 "shape": 7,
426 "type": "IMAGE",
427 "link": 78
428 },
429 {
430 "name": "image_b",
431 "shape": 7,
432 "type": "IMAGE",
433 "link": 30
434 }
435 ],
436 "outputs": [],
437 "properties": {
438 "Node name for S&R": "ImageCompare"
439 },
440 "widgets_values": [],
441 "widgets_values_named": []
442 },
443 {
444 "id": 26,
445 "type": "MarkdownNote",
446 "pos": [
447 -1570,
448 -210
449 ],
450 "size": [
451 450,
452 650
453 ],
454 "flags": [],
455 "order": 3,
456 "mode": 0,
457 "inputs": [],
458 "outputs": [],
459 "properties": [],
460 "widgets_values": [
461 "## Input Asset\n\n- [fashion_portrait_blue_silk_gown_vis.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/fashion_portrait_blue_silk_gown_vis.png)\n\n## Model Links\n\n- [Hugging Face:black-forest-labs/flux-3-image-klein-comfy](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy)\n\n> **VRAM tip** — this template ships the quantised base checkpoint to keep the footprint small. With more than 24 GB of VRAM, use the bf16 weights instead: [`flux3-image-klein-base-bf16.safetensors`](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-base-bf16.safetensors).\n\n**diffusion_models**\n\n- [flux3-image-klein-base-int8-convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-base-int8-convrot.safetensors)\n\n**text_encoders**\n\n- [qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors)\n- [qwen3vl_4b_int8_convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3vl_4b_int8_convrot.safetensors)\n\n**vae**\n\n- [flux2-vae.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ └── flux3-image-klein-base-int8-convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ ├── qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors\n│ │ └── qwen3vl_4b_int8_convrot.safetensors\n│ └── 📂 vae/\n│ └── flux2-vae.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
462 ],
463 "widgets_values_named": {
464 "text": "## Input Asset\n\n- [fashion_portrait_blue_silk_gown_vis.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/fashion_portrait_blue_silk_gown_vis.png)\n\n## Model Links\n\n- [Hugging Face:black-forest-labs/flux-3-image-klein-comfy](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy)\n\n> **VRAM tip** — this template ships the quantised base checkpoint to keep the footprint small. With more than 24 GB of VRAM, use the bf16 weights instead: [`flux3-image-klein-base-bf16.safetensors`](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-base-bf16.safetensors).\n\n**diffusion_models**\n\n- [flux3-image-klein-base-int8-convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-base-int8-convrot.safetensors)\n\n**text_encoders**\n\n- [qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors)\n- [qwen3vl_4b_int8_convrot.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3vl_4b_int8_convrot.safetensors)\n\n**vae**\n\n- [flux2-vae.safetensors](https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/vae/flux2-vae.safetensors)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ └── flux3-image-klein-base-int8-convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ ├── qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors\n│ │ └── qwen3vl_4b_int8_convrot.safetensors\n│ └── 📂 vae/\n│ └── flux2-vae.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
465 },
466 "color": "#222",
467 "bgcolor": "#000"
468 },
469 {
470 "id": 34,
471 "type": "PreviewAny",
472 "pos": [
473 440,
474 490
475 ],
476 "size": [
477 420,
478 490
479 ],
480 "flags": [],
481 "order": 14,
482 "mode": 0,
483 "inputs": [
484 {
485 "name": "source",
486 "type": "*",
487 "link": 63
488 }
489 ],
490 "outputs": [
491 {
492 "name": "STRING",
493 "type": "STRING",
494 "links": [
495 64,
496 71
497 ]
498 }
499 ],
500 "properties": {
501 "Node name for S&R": "PreviewAny"
502 },
503 "widgets_values": [],
504 "widgets_values_named": []
505 },
506 {
507 "id": 35,
508 "type": "MarkdownNote",
509 "pos": [
510 1480,
511 650
512 ],
513 "size": [
514 250,
515 100
516 ],
517 "flags": [],
518 "order": 4,
519 "mode": 0,
520 "inputs": [],
521 "outputs": [],
522 "properties": [],
523 "widgets_values": [
524 "Use `Empty Flux 2 Latent` node to customize image size\n\n`Create Bounding Boxes` node for node for creating prompts for precise editing"
525 ],
526 "widgets_values_named": {
527 "text": "Use `Empty Flux 2 Latent` node to customize image size\n\n`Create Bounding Boxes` node for node for creating prompts for precise editing"
528 },
529 "color": "#222",
530 "bgcolor": "#000"
531 },
532 {
533 "id": 44,
534 "type": "EmptyFlux2LatentImage",
535 "pos": [
536 1470,
537 480
538 ],
539 "size": [
540 270,
541 110
542 ],
543 "flags": [],
544 "order": 5,
545 "mode": 0,
546 "inputs": [],
547 "outputs": [
548 {
549 "name": "LATENT",
550 "type": "LATENT",
551 "links": null
552 }
553 ],
554 "properties": {
555 "Node name for S&R": "EmptyFlux2LatentImage"
556 },
557 "widgets_values": [
558 1024,
559 1024,
560 1
561 ],
562 "widgets_values_named": {
563 "width": 1024,
564 "height": 1024,
565 "batch_size": 1
566 }
567 },
568 {
569 "id": 46,
570 "type": "CLIPLoader",
571 "pos": [
572 -110,
573 -760
574 ],
575 "size": [
576 440,
577 120
578 ],
579 "flags": [],
580 "order": 6,
581 "mode": 0,
582 "inputs": [],
583 "outputs": [
584 {
585 "name": "CLIP",
586 "type": "CLIP",
587 "slot_index": 0,
588 "links": [
589 54
590 ]
591 }
592 ],
593 "properties": {
594 "Node name for S&R": "CLIPLoader",
595 "models": [
596 {
597 "name": "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
598 "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
599 "directory": "text_encoders"
600 }
601 ]
602 },
603 "widgets_values": [
604 "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
605 "flux3",
606 "default"
607 ],
608 "widgets_values_named": {
609 "clip_name": "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
610 "type": "flux3",
611 "device": "default"
612 }
613 },
614 {
615 "id": 47,
616 "type": "TextGenerate",
617 "pos": [
618 390,
619 -760
620 ],
621 "size": [
622 400,
623 460
624 ],
625 "flags": [],
626 "order": 15,
627 "mode": 0,
628 "showAdvanced": false,
629 "inputs": [
630 {
631 "name": "clip",
632 "type": "CLIP",
633 "link": 54
634 },
635 {
636 "name": "image",
637 "shape": 7,
638 "type": "IMAGE",
639 "link": 66
640 },
641 {
642 "name": "video",
643 "shape": 7,
644 "type": "IMAGE",
645 "link": null
646 },
647 {
648 "name": "audio",
649 "shape": 7,
650 "type": "AUDIO",
651 "link": null
652 },
653 {
654 "name": "system_prompt",
655 "shape": 7,
656 "type": "STRING",
657 "link": 60
658 },
659 {
660 "name": "prompt",
661 "type": "STRING",
662 "widget": {
663 "name": "prompt"
664 },
665 "link": 64
666 }
667 ],
668 "outputs": [
669 {
670 "name": "generated_text",
671 "type": "STRING",
672 "links": [
673 69
674 ]
675 },
676 {
677 "name": "thinking",
678 "type": "STRING",
679 "links": []
680 }
681 ],
682 "properties": {
683 "Node name for S&R": "TextGenerate"
684 },
685 "widgets_values": [
686 "",
687 3584,
688 "on",
689 1,
690 1,
691 0.95,
692 0,
693 1,
694 0,
695 0,
696 false,
697 true,
698 "off"
699 ],
700 "widgets_values_named": {
701 "prompt": "",
702 "max_length": 3584,
703 "sampling_mode": "on",
704 "sampling_mode.temperature": 1,
705 "sampling_mode.top_k": 1,
706 "sampling_mode.top_p": 0.95,
707 "sampling_mode.min_p": 0,
708 "sampling_mode.repetition_penalty": 1,
709 "sampling_mode.seed": 0,
710 "sampling_mode.presence_penalty": 0,
711 "thinking": false,
712 "use_default_template": true,
713 "mtp": "off"
714 }
715 },
716 {
717 "id": 48,
718 "type": "PrimitiveStringMultiline",
719 "pos": [
720 -110,
721 -590
722 ],
723 "size": [
724 440,
725 180
726 ],
727 "flags": [],
728 "order": 7,
729 "mode": 0,
730 "inputs": [],
731 "outputs": [
732 {
733 "name": "STRING",
734 "type": "STRING",
735 "links": [
736 60
737 ]
738 }
739 ],
740 "title": "Text (System prompt)",
741 "properties": {
742 "Node name for S&R": "PrimitiveStringMultiline"
743 },
744 "widgets_values": [
745 "You are the prompt upsampler of an image-editing model. You see the reference image(s), attached in order (the first image, the second image, ...), and the user's short request. Expand it into ONE detailed, self-contained instruction: the caption the editing model receives together with the same images. Output only the instruction as one continuous English prose block, with no greetings, explanations, Markdown, JSON, coordinates, ids or angle-bracket tokens. Read a vague or conversational request as the most plausible edit of the supplied images.\\n\\nPick the voice by task shape. When one reference stays and gets bounded changes, write an imperative editing instruction on it (\\\"Remove the ...\\\", \\\"Change the ... to ...\\\", \\\"Zoom in on ...\\\"); a whole-image transformation opens with its scope (\\\"Convert the entire image into ...\\\", \\\"Apply a ... filter over the entire scene\\\", \\\"Horizontally flip the entire image so that ...\\\", \\\"Shift the camera viewpoint to ...\\\", then where the major elements should now be). When the references are drawn into a newly composed frame (combining subjects, a new scene, a garment, object or style donor), write a generation request (\\\"Create a photograph of ...\\\", \\\"Create an anime-style illustration of ...\\\", \\\"Generate a new image featuring ...\\\") that says what to take from each image, by ordinal, and what is newly generated.\\n\\nKeep every explicit edit, constraint, count, position, style cue and piece of wording, and decide what is left open as one concrete plan. Ground everything in what is actually visible: identify each referent unambiguously by its real appearance, never mention content that is not there, and use every image the user attached. State every end state concretely (which color, how large, which pose, which material) and give new content enough appearance to be generated. Cover the knock-on effects of the change (shadows, reflections, occlusion, perspective, scale, lighting) and say what fills a removed region. A zoom-in names what stays in frame and which neighbors are cropped out; an outpainting continues the scene in the same medium. Describe the change, not the whole scene, and close an editing instruction with one compact clause naming what stays unchanged; transferred people keep their identity, face and accessories unless asked otherwise. Transcribe on-image text verbatim in its original language inside double quotes, with line breaks as \\\\n, and match the original font, size and color when replacing it. Name recognizable public figures, brands and landmarks you can see. Directions are frame-relative; use no evaluative or quality words. Typical length is 50 to 150 words.\\n\\nOutput only the instruction."
746 ],
747 "widgets_values_named": {
748 "value": "You are the prompt upsampler of an image-editing model. You see the reference image(s), attached in order (the first image, the second image, ...), and the user's short request. Expand it into ONE detailed, self-contained instruction: the caption the editing model receives together with the same images. Output only the instruction as one continuous English prose block, with no greetings, explanations, Markdown, JSON, coordinates, ids or angle-bracket tokens. Read a vague or conversational request as the most plausible edit of the supplied images.\\n\\nPick the voice by task shape. When one reference stays and gets bounded changes, write an imperative editing instruction on it (\\\"Remove the ...\\\", \\\"Change the ... to ...\\\", \\\"Zoom in on ...\\\"); a whole-image transformation opens with its scope (\\\"Convert the entire image into ...\\\", \\\"Apply a ... filter over the entire scene\\\", \\\"Horizontally flip the entire image so that ...\\\", \\\"Shift the camera viewpoint to ...\\\", then where the major elements should now be). When the references are drawn into a newly composed frame (combining subjects, a new scene, a garment, object or style donor), write a generation request (\\\"Create a photograph of ...\\\", \\\"Create an anime-style illustration of ...\\\", \\\"Generate a new image featuring ...\\\") that says what to take from each image, by ordinal, and what is newly generated.\\n\\nKeep every explicit edit, constraint, count, position, style cue and piece of wording, and decide what is left open as one concrete plan. Ground everything in what is actually visible: identify each referent unambiguously by its real appearance, never mention content that is not there, and use every image the user attached. State every end state concretely (which color, how large, which pose, which material) and give new content enough appearance to be generated. Cover the knock-on effects of the change (shadows, reflections, occlusion, perspective, scale, lighting) and say what fills a removed region. A zoom-in names what stays in frame and which neighbors are cropped out; an outpainting continues the scene in the same medium. Describe the change, not the whole scene, and close an editing instruction with one compact clause naming what stays unchanged; transferred people keep their identity, face and accessories unless asked otherwise. Transcribe on-image text verbatim in its original language inside double quotes, with line breaks as \\\\n, and match the original font, size and color when replacing it. Name recognizable public figures, brands and landmarks you can see. Directions are frame-relative; use no evaluative or quality words. Typical length is 50 to 150 words.\\n\\nOutput only the instruction."
749 }
750 },
751 {
752 "id": 49,
753 "type": "Flux3LayoutPrompt",
754 "pos": [
755 -90,
756 490
757 ],
758 "size": [
759 400,
760 200
761 ],
762 "flags": [],
763 "order": 13,
764 "mode": 0,
765 "inputs": [
766 {
767 "name": "element",
768 "type": "ARRAY",
769 "link": 76
770 }
771 ],
772 "outputs": [
773 {
774 "name": "prompt",
775 "type": "STRING",
776 "links": [
777 63
778 ]
779 }
780 ],
781 "properties": {
782 "Node name for S&R": "Flux3LayoutPrompt"
783 },
784 "widgets_values": [
785 "In <ref_image_0>, change the dress color <obj_1> to red"
786 ],
787 "widgets_values_named": {
788 "prompt": "In <ref_image_0>, change the dress color <obj_1> to red"
789 },
790 "color": "#232",
791 "bgcolor": "#353"
792 },
793 {
794 "id": 50,
795 "type": "BatchImagesNode",
796 "pos": [
797 20,
798 -360
799 ],
800 "size": [
801 140,
802 70
803 ],
804 "flags": [],
805 "order": 12,
806 "mode": 0,
807 "inputs": [
808 {
809 "name": "images.image0",
810 "type": "IMAGE",
811 "link": 80
812 },
813 {
814 "name": "images.image1",
815 "shape": 7,
816 "type": "IMAGE",
817 "link": null
818 }
819 ],
820 "outputs": [
821 {
822 "name": "IMAGE",
823 "type": "IMAGE",
824 "links": [
825 66
826 ]
827 }
828 ],
829 "properties": {
830 "Node name for S&R": "BatchImagesNode"
831 }
832 },
833 {
834 "id": 51,
835 "type": "ComfySwitchNode",
836 "pos": [
837 900,
838 -750
839 ],
840 "size": [
841 270,
842 80
843 ],
844 "flags": [],
845 "order": 16,
846 "mode": 0,
847 "inputs": [
848 {
849 "name": "on_false",
850 "shape": 7,
851 "type": "STRING",
852 "link": 69
853 },
854 {
855 "name": "on_true",
856 "shape": 7,
857 "type": "STRING",
858 "link": 71
859 }
860 ],
861 "outputs": [
862 {
863 "name": "output",
864 "type": "STRING",
865 "links": [
866 68
867 ]
868 }
869 ],
870 "properties": {
871 "Node name for S&R": "ComfySwitchNode"
872 },
873 "widgets_values": [
874 false
875 ],
876 "widgets_values_named": {
877 "switch": false
878 }
879 },
880 {
881 "id": 52,
882 "type": "PreviewAny",
883 "pos": [
884 900,
885 -560
886 ],
887 "size": [
888 430,
889 260
890 ],
891 "flags": [],
892 "order": 17,
893 "mode": 0,
894 "inputs": [
895 {
896 "name": "source",
897 "type": "*",
898 "link": 68
899 }
900 ],
901 "outputs": [
902 {
903 "name": "STRING",
904 "type": "STRING",
905 "links": [
906 70
907 ]
908 }
909 ],
910 "properties": {
911 "Node name for S&R": "PreviewAny"
912 },
913 "widgets_values": [],
914 "widgets_values_named": []
915 },
916 {
917 "id": 54,
918 "type": "LoadImage",
919 "pos": [
920 -640,
921 -160
922 ],
923 "size": [
924 440,
925 490
926 ],
927 "flags": [],
928 "order": 8,
929 "mode": 0,
930 "inputs": [],
931 "outputs": [
932 {
933 "name": "IMAGE",
934 "type": "IMAGE",
935 "slot_index": 0,
936 "links": [
937 73,
938 77,
939 78,
940 80
941 ]
942 },
943 {
944 "name": "MASK",
945 "type": "MASK",
946 "slot_index": 1,
947 "links": []
948 }
949 ],
950 "properties": {
951 "Node name for S&R": "LoadImage"
952 },
953 "widgets_values": [
954 "fashion_portrait_blue_silk_gown_vis.png",
955 "image"
956 ],
957 "widgets_values_named": {
958 "image": "fashion_portrait_blue_silk_gown_vis.png",
959 "upload": "image"
960 }
961 },
962 {
963 "id": 55,
964 "type": "CreateBoundingBoxes",
965 "pos": [
966 -630,
967 390
968 ],
969 "size": [
970 420,
971 820
972 ],
973 "flags": [],
974 "order": 11,
975 "mode": 0,
976 "inputs": [
977 {
978 "name": "background",
979 "shape": 7,
980 "type": "IMAGE",
981 "link": 73
982 },
983 {
984 "name": "bboxes",
985 "shape": 7,
986 "type": "BOUNDING_BOX,ARRAY,STRING",
987 "link": null
988 }
989 ],
990 "outputs": [
991 {
992 "name": "preview",
993 "type": "IMAGE",
994 "links": []
995 },
996 {
997 "name": "bboxes",
998 "type": "BOUNDING_BOX",
999 "links": []
1000 },
1001 {
1002 "name": "elements",
1003 "type": "ARRAY",
1004 "links": [
1005 76
1006 ]
1007 }
1008 ],
1009 "properties": {
1010 "Node name for S&R": "CreateBoundingBoxes"
1011 },
1012 "widgets_values": [
1013 896,
1014 1152,
1015 [
1016 {
1017 "x": 128,
1018 "y": 192,
1019 "width": 736,
1020 "height": 896,
1021 "metadata": {
1022 "type": "obj",
1023 "text": "",
1024 "desc": "dress",
1025 "palette": []
1026 }
1027 }
1028 ],
1029 []
1030 ],
1031 "widgets_values_named": {
1032 "width": 896,
1033 "height": 1152,
1034 "editor_state": [
1035 {
1036 "x": 128,
1037 "y": 192,
1038 "width": 736,
1039 "height": 896,
1040 "metadata": {
1041 "type": "obj",
1042 "text": "",
1043 "desc": "dress",
1044 "palette": []
1045 }
1046 }
1047 ],
1048 "last_incoming": []
1049 },
1050 "color": "#322",
1051 "bgcolor": "#533"
1052 },
1053 {
1054 "id": 58,
1055 "type": "CLIPTextEncode",
1056 "pos": [
1057 420,
1058 140
1059 ],
1060 "size": [
1061 440,
1062 200
1063 ],
1064 "flags": [],
1065 "order": 10,
1066 "mode": 0,
1067 "inputs": [
1068 {
1069 "name": "clip",
1070 "type": "CLIP",
1071 "link": 81
1072 }
1073 ],
1074 "outputs": [
1075 {
1076 "name": "CONDITIONING",
1077 "type": "CONDITIONING",
1078 "slot_index": 0,
1079 "links": [
1080 82
1081 ]
1082 }
1083 ],
1084 "title": "Negative Prompt",
1085 "properties": {
1086 "Node name for S&R": "CLIPTextEncode"
1087 },
1088 "widgets_values": [
1089 ""
1090 ],
1091 "widgets_values_named": {
1092 "text": ""
1093 },
1094 "color": "#223",
1095 "bgcolor": "#335"
1096 },
1097 {
1098 "id": 59,
1099 "type": "UNETLoader",
1100 "pos": [
1101 -100,
1102 -140
1103 ],
1104 "size": [
1105 440,
1106 90
1107 ],
1108 "flags": [],
1109 "order": 9,
1110 "mode": 0,
1111 "inputs": [],
1112 "outputs": [
1113 {
1114 "name": "MODEL",
1115 "type": "MODEL",
1116 "slot_index": 0,
1117 "links": [
1118 83
1119 ]
1120 }
1121 ],
1122 "properties": {
1123 "Node name for S&R": "UNETLoader",
1124 "models": [
1125 {
1126 "name": "flux3-image-klein-base-int8-convrot.safetensors",
1127 "url": "https://huggingface.co/black-forest-labs/flux-3-image-klein-comfy/resolve/main/diffusion_models/flux3-image-klein-base-int8-convrot.safetensors",
1128 "directory": "diffusion_models"
1129 }
1130 ]
1131 },
1132 "widgets_values": [
1133 "flux3-image-klein-base-int8-convrot.safetensors",
1134 "default"
1135 ],
1136 "widgets_values_named": {
1137 "unet_name": "flux3-image-klein-base-int8-convrot.safetensors",
1138 "weight_dtype": "default"
1139 }
1140 }
1141 ],
1142 "links": [
1143 [
1144 4,
1145 7,
1146 0,
1147 8,
1148 0,
1149 "LATENT"
1150 ],
1151 [
1152 5,
1153 3,
1154 0,
1155 8,
1156 1,
1157 "VAE"
1158 ],
1159 [
1160 6,
1161 8,
1162 0,
1163 9,
1164 0,
1165 "IMAGE"
1166 ],
1167 [
1168 22,
1169 17,
1170 0,
1171 7,
1172 1,
1173 "CONDITIONING"
1174 ],
1175 [
1176 23,
1177 17,
1178 1,
1179 7,
1180 2,
1181 "CONDITIONING"
1182 ],
1183 [
1184 24,
1185 17,
1186 2,
1187 7,
1188 3,
1189 "LATENT"
1190 ],
1191 [
1192 30,
1193 9,
1194 0,
1195 18,
1196 1,
1197 "IMAGE"
1198 ],
1199 [
1200 43,
1201 2,
1202 0,
1203 4,
1204 0,
1205 "CLIP"
1206 ],
1207 [
1208 63,
1209 49,
1210 0,
1211 34,
1212 0,
1213 "STRING"
1214 ],
1215 [
1216 68,
1217 51,
1218 0,
1219 52,
1220 0,
1221 "*"
1222 ],
1223 [
1224 69,
1225 47,
1226 0,
1227 51,
1228 0,
1229 "STRING"
1230 ],
1231 [
1232 70,
1233 52,
1234 0,
1235 4,
1236 1,
1237 "STRING"
1238 ],
1239 [
1240 71,
1241 34,
1242 0,
1243 51,
1244 1,
1245 "STRING"
1246 ],
1247 [
1248 73,
1249 54,
1250 0,
1251 55,
1252 0,
1253 "IMAGE"
1254 ],
1255 [
1256 76,
1257 55,
1258 2,
1259 49,
1260 0,
1261 "ARRAY"
1262 ],
1263 [
1264 78,
1265 54,
1266 0,
1267 18,
1268 0,
1269 "IMAGE"
1270 ],
1271 [
1272 81,
1273 2,
1274 0,
1275 58,
1276 0,
1277 "CLIP"
1278 ],
1279 [
1280 83,
1281 59,
1282 0,
1283 7,
1284 0,
1285 "MODEL"
1286 ],
1287 [
1288 20,
1289 4,
1290 0,
1291 17,
1292 0,
1293 "CONDITIONING"
1294 ],
1295 [
1296 82,
1297 58,
1298 0,
1299 17,
1300 1,
1301 "CONDITIONING"
1302 ],
1303 [
1304 25,
1305 3,
1306 0,
1307 17,
1308 2,
1309 "VAE"
1310 ],
1311 [
1312 77,
1313 54,
1314 0,
1315 17,
1316 3,
1317 "IMAGE"
1318 ],
1319 [
1320 54,
1321 46,
1322 0,
1323 47,
1324 0,
1325 "CLIP"
1326 ],
1327 [
1328 66,
1329 50,
1330 0,
1331 47,
1332 1,
1333 "IMAGE"
1334 ],
1335 [
1336 60,
1337 48,
1338 0,
1339 47,
1340 4,
1341 "STRING"
1342 ],
1343 [
1344 64,
1345 34,
1346 0,
1347 47,
1348 5,
1349 "STRING"
1350 ],
1351 [
1352 80,
1353 54,
1354 0,
1355 50,
1356 0,
1357 "IMAGE"
1358 ]
1359 ],
1360 "groups": [
1361 {
1362 "id": 1,
1363 "title": "Models",
1364 "bounding": [
1365 -120,
1366 -240,
1367 490,
1368 610
1369 ],
1370 "color": "#3f789e",
1371 "flags": []
1372 },
1373 {
1374 "id": 2,
1375 "title": "Prompt",
1376 "bounding": [
1377 400,
1378 -240,
1379 470,
1380 610
1381 ],
1382 "color": "#3f789e",
1383 "flags": []
1384 },
1385 {
1386 "id": 3,
1387 "title": "Sampling",
1388 "bounding": [
1389 1380,
1390 -240,
1391 460,
1392 610
1393 ],
1394 "color": "#3f789e",
1395 "flags": []
1396 },
1397 {
1398 "id": 4,
1399 "title": "Plug more reference images here",
1400 "bounding": [
1401 900,
1402 -240,
1403 450,
1404 610
1405 ],
1406 "color": "#A88",
1407 "flags": []
1408 },
1409 {
1410 "id": 5,
1411 "title": "User Prompt",
1412 "bounding": [
1413 -120,
1414 400,
1415 1470,
1416 620
1417 ],
1418 "color": "#A88",
1419 "flags": []
1420 },
1421 {
1422 "id": 6,
1423 "title": "Prompt Enhancer",
1424 "bounding": [
1425 -120,
1426 -830,
1427 1470,
1428 560
1429 ],
1430 "color": "#444",
1431 "flags": []
1432 },
1433 {
1434 "id": 7,
1435 "title": "Upload Input Image here",
1436 "bounding": [
1437 -670,
1438 -240,
1439 520,
1440 1480
1441 ],
1442 "color": "#3f789e",
1443 "flags": []
1444 },
1445 {
1446 "id": 8,
1447 "title": "Custom size",
1448 "bounding": [
1449 1380,
1450 400,
1451 454.8369607067084,
1452 387.6467175566883
1453 ],
1454 "color": "#444",
1455 "flags": []
1456 }
1457 ],
1458 "config": [],
1459 "extra": {
1460 "ds": {
1461 "scale": 0.3774356705168978,
1462 "offset": [
1463 1763.6064806411673,
1464 991.520094550635
1465 ]
1466 },
1467 "frontendVersion": "1.55.17"
1468 },
1469 "version": 0.4
1470}