Files
scraed-LanPaint/example_workflows/Krea2_EncodeDecode_Inpaint.json
T
scraed 59aa08dff0 Store masks inside exported videos and convert the example set to ImageEncode/ImageDecode
Mask-in-video (the masks now travel with the video file):
- New videometa module: write/read a JSON payload under the lanpaint-mask
  mp4 metadata tag via PyAV (stream copy, movflags=use_metadata_tags), so
  exporting produces a NEW file and the source is never modified.
- Two server routes: GET /lanpaint/video_mask_meta (read the payload back)
  and POST /lanpaint/export_mask_video (remux into input/<base>_masked.mp4).
- The mask editor exports the painted keyframes (base64 PNGs) + audio
  intervals into the video; loading a video with the tag auto-restores the
  masks (editor and node preview). A video without the tag clears the
  workflow's masks - the video is the source of truth. The export also
  offers a native save dialog (showSaveFilePicker) when available.
- The video widget upload now uses video_upload so MP4s are selectable in
  the file chooser (was image_upload).
- LanPaint_ImageEncode accepts 5D latents from video VAEs encoding a single
  image (e.g. the Hunyuan video VAE) - fixes the Hunyuan example.

Example set conversion (one example per supported model, new files, old
pairs removed after being superseded):
- New *ImageEncode/*EncodeDecode example workflows for SDXL, Flux.1,
  Flux.2 Dev, Flux2 Klein, SD3.5, Hunyuan, Ideogram4, Krea2, Qwen Edit,
  Qwen Image, Z-Image, Wan 2.2 and MiniMax H3 (AV), all using
  LanPaint_ImageEncode/ImageDecode instead of VAEEncode +
  SetLatentNoiseMask + VAEDecode + MaskBlend; every example references its
  own example folder's masked input (hash-verified); preview jpgs generated
  from the test runs; the H3 example ships its output mp4 as a preview.
- HiDream example removed on request; Example_29 added with the H3 masked
  input video.

Fixes along the way: normalize node input.link/output.links fields against
the links arrays in all converted workflows (the frontend renders
null-link nodes as disconnected); stale Inpainting_mode widget removed from
the Flux.2 sampler; Lambda defaults 5.0 (first-order scheme); torchaudio
resample test assertion relaxed (edge ringing); the videometa tests updated
to the final export signature.
2026-08-09 20:41:45 +08:00

2339 lines
46 KiB
JSON

{
"id": "08988737-a544-4ab1-99fb-22d67b7c36e3",
"revision": 0,
"last_node_id": 412,
"last_link_id": 637,
"nodes": [
{
"id": 200,
"type": "LoadImage",
"pos": [
-519.8821611382093,
0
],
"size": [
270,
314
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "image",
"name": "image",
"type": "COMBO",
"widget": {
"name": "image"
},
"link": null
},
{
"localized_name": "choose file to upload",
"name": "upload",
"type": "IMAGEUPLOAD",
"widget": {
"name": "upload"
},
"link": null
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
300
]
},
{
"localized_name": "MASK",
"name": "MASK",
"type": "MASK",
"links": [
300
]
}
],
"properties": {
"Node name for S&R": "LoadImage",
"cnr_id": "comfy-core",
"image": "clipspace/clipspace-painted-masked-1782550310396.png [input]"
},
"widgets_values": [
"Example_28_Masked.png",
"image"
]
},
{
"id": 29,
"type": "SaveImage",
"pos": [
839.1346474889581,
-7.177197073684759
],
"size": [
880,
1020
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "images",
"name": "images",
"type": "IMAGE",
"link": 44
},
{
"localized_name": "filename_prefix",
"name": "filename_prefix",
"type": "STRING",
"widget": {
"name": "filename_prefix"
},
"link": null
}
],
"outputs": [
{
"localized_name": "images",
"name": "images",
"type": "IMAGE",
"links": []
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.25.0",
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"Krea2_LanPaint_Inpaint"
]
},
{
"id": 30,
"type": "b0e5ca93-2731-42b9-8e0a-d28ea851ff81",
"pos": [
109.94310356783686,
-25.917759755456316
],
"size": [
560,
1010
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "value",
"type": "STRING",
"widget": {
"name": "value"
},
"link": null
},
{
"label": "prompt_enhance",
"name": "value_1",
"type": "BOOLEAN",
"widget": {
"name": "value_1"
},
"link": null
},
{
"label": "LLM_max_token",
"name": "max_length",
"type": "INT",
"widget": {
"name": "max_length"
},
"link": null
},
{
"name": "seed",
"type": "INT",
"widget": {
"name": "seed"
},
"link": null
},
{
"label": "enable_lora?",
"name": "value_2",
"type": "BOOLEAN",
"widget": {
"name": "value_2"
},
"link": null
},
{
"name": "lora_name",
"type": "COMBO",
"widget": {
"name": "lora_name"
},
"link": null
},
{
"label": "lora_strength",
"name": "strength_model",
"type": "FLOAT",
"widget": {
"name": "strength_model"
},
"link": null
},
{
"label": "lora_trigger_word",
"name": "string_b",
"type": "STRING",
"widget": {
"name": "string_b"
},
"link": null
},
{
"name": "unet_name",
"type": "COMBO",
"widget": {
"name": "unet_name"
},
"link": null
},
{
"name": "clip_name",
"type": "COMBO",
"widget": {
"name": "clip_name"
},
"link": null
},
{
"name": "vae_name",
"type": "COMBO",
"widget": {
"name": "vae_name"
},
"link": null
},
{
"label": "inpaint_image",
"name": "inpaint_image",
"type": "IMAGE",
"link": 300
},
{
"label": "inpaint_mask",
"name": "inpaint_mask",
"type": "MASK",
"link": 301
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
44
]
}
],
"properties": {
"proxyWidgets": [
[
"19",
"value"
],
[
"24",
"value"
],
[
"16",
"max_length"
],
[
"3",
"seed"
],
[
"23",
"value"
],
[
"15",
"lora_name"
],
[
"15",
"strength_model"
],
[
"27",
"string_b"
],
[
"10",
"unet_name"
],
[
"11",
"clip_name"
],
[
"12",
"vae_name"
]
],
"cnr_id": "comfy-core",
"ver": "0.25.0",
"previewExposures": [
{
"name": "$$canvas-image-preview",
"sourceNodeId": "3",
"sourcePreviewName": "$$canvas-image-preview"
}
]
},
"widgets_values": []
}
],
"links": [
[
44,
30,
0,
29,
0,
"IMAGE"
],
[
300,
200,
0,
30,
11,
"IMAGE"
],
[
301,
200,
1,
30,
12,
"MASK"
]
],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "b0e5ca93-2731-42b9-8e0a-d28ea851ff81",
"version": 1,
"state": {
"lastGroupId": 10,
"lastNodeId": 412,
"lastLinkId": 637,
"lastRerouteId": 0
},
"revision": 1,
"config": {},
"name": "Text to Image (Krea-2 Turbo)",
"inputNode": {
"id": -10,
"bounding": [
-1720,
410,
146.466796875,
308
]
},
"outputNode": {
"id": -20,
"bounding": [
1560,
496,
128,
68
]
},
"inputs": [
{
"id": "b0f5c754-5322-440c-8c1c-ba732e910d33",
"name": "value",
"type": "STRING",
"linkIds": [
45
],
"pos": [
-1597.533203125,
434
]
},
{
"id": "47b0e74d-ef80-4423-a7a6-9bd1673092bb",
"name": "value_1",
"type": "BOOLEAN",
"linkIds": [
46
],
"label": "prompt_enhance",
"pos": [
-1597.533203125,
454
]
},
{
"id": "5fc735ae-a50b-4363-bff9-850030ad5dd5",
"name": "max_length",
"type": "INT",
"linkIds": [
49
],
"label": "LLM_max_token",
"pos": [
-1597.533203125,
474
]
},
{
"id": "75652c4f-cde2-4ad7-b322-73d47b533ef8",
"name": "seed",
"type": "INT",
"linkIds": [
56
],
"pos": [
-1597.533203125,
494
]
},
{
"id": "b0ca5f55-a223-40de-9e37-aaf2cf0904dd",
"name": "value_2",
"type": "BOOLEAN",
"linkIds": [
57
],
"label": "enable_lora?",
"pos": [
-1597.533203125,
514
]
},
{
"id": "eb2e846b-2e6c-49a2-bc56-9c772c8a1862",
"name": "lora_name",
"type": "COMBO",
"linkIds": [
58
],
"pos": [
-1597.533203125,
534
]
},
{
"id": "d2693bbb-bb95-4fb1-9a3d-27a1bb0b664b",
"name": "strength_model",
"type": "FLOAT",
"linkIds": [
59
],
"label": "lora_strength",
"pos": [
-1597.533203125,
554
]
},
{
"id": "e2031135-b490-4909-b1ec-6b00aecf819e",
"name": "string_b",
"type": "STRING",
"linkIds": [
60
],
"label": "lora_trigger_word",
"pos": [
-1597.533203125,
574
]
},
{
"id": "14e2eb6a-5fa1-40c9-81d1-a928360fcd80",
"name": "unet_name",
"type": "COMBO",
"linkIds": [
61
],
"pos": [
-1597.533203125,
594
]
},
{
"id": "e27ba0c5-697f-44f4-b475-c2dcfa594724",
"name": "clip_name",
"type": "COMBO",
"linkIds": [
62
],
"pos": [
-1597.533203125,
614
]
},
{
"id": "75c25d8e-b881-46e4-aca7-d2ada9e147d0",
"name": "vae_name",
"type": "COMBO",
"linkIds": [
63
],
"pos": [
-1597.533203125,
634
]
},
{
"id": "82c3b713-d4fb-4723-8171-44e3cf9f661f",
"name": "inpaint_image",
"type": "IMAGE",
"linkIds": [
629,
635
],
"label": "inpaint_image",
"pos": [
-1597.533203125,
654
]
},
{
"id": "bdf878cf-e03c-4407-98ad-e956e0e855ac",
"name": "inpaint_mask",
"type": "MASK",
"linkIds": [
630,
636
],
"label": "inpaint_mask",
"pos": [
-1597.533203125,
674
]
}
],
"outputs": [
{
"id": "e4073813-752d-4584-96b5-6e42eac355dd",
"name": "IMAGE",
"type": "IMAGE",
"linkIds": [
637
],
"localized_name": "IMAGE",
"pos": [
1584,
520
]
}
],
"widgets": [],
"nodes": [
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
100,
-250
],
"size": [
480,
420
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 10
},
{
"localized_name": "text",
"name": "text",
"type": "STRING",
"widget": {
"name": "text"
},
"link": 40
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
4,
13
]
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"A high-contrast, hyper-stylized fashion editorial portrait shot against a saturated mustard-yellow seamless backdrop, with the central figure rendered in crisp desaturated black-and-white, creating a striking duotone aesthetic reminiscent of David LaChapelle meets Helmut Newton with a punk-gothic edge.\n\nThe subject is a fierce young woman with a platinum-bleached, spiked liberty mohawk crown of hair, her expression cold and commanding as she stares directly into the lens. She wears a cropped black leather biker jacket exploding with oversized metallic conical studs and spikes across the shoulders, paired with a minimal black bikini bottom, sheer black thigh-high stockings, and chunky knee-high lace-up combat platform boots. Her toned, athletic physique is fully exposed at the midriff.\n\nShe sits regally upon an ornate throne carved in the shape of a snarling, fanged beast's head \u2014 part dragon, part demonic feline \u2014 its silver-grey surface intricately detailed with bones, scales, and gothic ornamentation. Her booted foot rests on a battered metal road case wrapped in heavy chains and covered in stickers and band decals.\n\nIn her right hand she grips a massive medieval war scythe, its long wooden shaft wrapped in leather, the enormous curved blade arcing dramatically over her head. Perched on her left fist, talons gripping her knuckles, is a majestic American bald eagle with pristine white head feathers and a sharp yellow beak, staring off to the side with predatory alertness.\n\nStudio lighting is hard and theatrical, casting crisp shadows. The composition is symmetrical, iconic, and poster-like \u2014 punk rock goddess of war meets American mythology. Hyperrealistic, high-fashion photography, 8k, sharp detail, magazine cover quality."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 10,
"type": "UNETLoader",
"pos": [
-410,
-240
],
"size": [
450,
140
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"localized_name": "unet_name",
"name": "unet_name",
"type": "COMBO",
"widget": {
"name": "unet_name"
},
"link": 61
},
{
"localized_name": "weight_dtype",
"name": "weight_dtype",
"type": "COMBO",
"widget": {
"name": "weight_dtype"
},
"link": null
}
],
"outputs": [
{
"localized_name": "MODEL",
"name": "MODEL",
"type": "MODEL",
"links": [
16,
28
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.25.0",
"models": [
{
"name": "krea2_turbo_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/diffusion_models/krea2_turbo_fp8_scaled.safetensors",
"directory": "diffusion_models"
}
]
},
"widgets_values": [
"krea2_turbo_fp8_scaled.safetensors",
"default"
]
},
{
"id": 11,
"type": "CLIPLoader",
"pos": [
-410,
150
],
"size": [
450,
170
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"localized_name": "clip_name",
"name": "clip_name",
"type": "COMBO",
"widget": {
"name": "clip_name"
},
"link": 62
},
{
"localized_name": "type",
"name": "type",
"type": "COMBO",
"widget": {
"name": "type"
},
"link": null
},
{
"localized_name": "device",
"name": "device",
"shape": 7,
"type": "COMBO",
"widget": {
"name": "device"
},
"link": null
}
],
"outputs": [
{
"localized_name": "CLIP",
"name": "CLIP",
"type": "CLIP",
"links": [
10,
18
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.25.0",
"models": [
{
"name": "qwen3vl_4b_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/text_encoders/qwen3vl_4b_fp8_scaled.safetensors",
"directory": "text_encoders"
}
]
},
"widgets_values": [
"qwen3vl_4b_fp8_scaled.safetensors",
"krea2",
"default"
]
},
{
"id": 13,
"type": "ConditioningZeroOut",
"pos": [
350,
220
],
"size": [
230,
30
],
"flags": {
"collapsed": true
},
"order": 7,
"mode": 0,
"inputs": [
{
"localized_name": "conditioning",
"name": "conditioning",
"type": "CONDITIONING",
"link": 13
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
14
]
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": []
},
{
"id": 15,
"type": "LoraLoaderModelOnly",
"pos": [
-410,
-50
],
"size": [
450,
170
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": 16
},
{
"localized_name": "lora_name",
"name": "lora_name",
"type": "COMBO",
"widget": {
"name": "lora_name"
},
"link": 58
},
{
"localized_name": "strength_model",
"name": "strength_model",
"type": "FLOAT",
"widget": {
"name": "strength_model"
},
"link": 59
}
],
"outputs": [
{
"localized_name": "MODEL",
"name": "MODEL",
"type": "MODEL",
"links": [
29
]
}
],
"properties": {
"Node name for S&R": "LoraLoaderModelOnly",
"cnr_id": "comfy-core",
"ver": "0.25.0",
"models": [
{
"name": "krea2_darkbrush.safetensors",
"url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/loras/krea2_darkbrush.safetensors",
"directory": "loras"
}
]
},
"widgets_values": [
"krea2_darkbrush.safetensors",
0.8
]
},
{
"id": 16,
"type": "TextGenerate",
"pos": [
60,
650
],
"size": [
400,
412
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 18
},
{
"localized_name": "image",
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"localized_name": "video",
"name": "video",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"localized_name": "audio",
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"localized_name": "prompt",
"name": "prompt",
"type": "STRING",
"widget": {
"name": "prompt"
},
"link": 19
},
{
"localized_name": "max_length",
"name": "max_length",
"type": "INT",
"widget": {
"name": "max_length"
},
"link": 49
},
{
"localized_name": "sampling_mode",
"name": "sampling_mode",
"type": "COMFY_DYNAMICCOMBO_V3",
"widget": {
"name": "sampling_mode"
},
"link": null
},
{
"localized_name": "temperature",
"name": "sampling_mode.temperature",
"type": "FLOAT",
"widget": {
"name": "sampling_mode.temperature"
},
"link": null
},
{
"localized_name": "top_k",
"name": "sampling_mode.top_k",
"type": "INT",
"widget": {
"name": "sampling_mode.top_k"
},
"link": null
},
{
"localized_name": "top_p",
"name": "sampling_mode.top_p",
"type": "FLOAT",
"widget": {
"name": "sampling_mode.top_p"
},
"link": null
},
{
"localized_name": "min_p",
"name": "sampling_mode.min_p",
"type": "FLOAT",
"widget": {
"name": "sampling_mode.min_p"
},
"link": null
},
{
"localized_name": "repetition_penalty",
"name": "sampling_mode.repetition_penalty",
"type": "FLOAT",
"widget": {
"name": "sampling_mode.repetition_penalty"
},
"link": null
},
{
"localized_name": "seed",
"name": "sampling_mode.seed",
"type": "INT",
"widget": {
"name": "sampling_mode.seed"
},
"link": null
},
{
"localized_name": "presence_penalty",
"name": "sampling_mode.presence_penalty",
"shape": 7,
"type": "FLOAT",
"widget": {
"name": "sampling_mode.presence_penalty"
},
"link": null
},
{
"localized_name": "thinking",
"name": "thinking",
"shape": 7,
"type": "BOOLEAN",
"widget": {
"name": "thinking"
},
"link": null
},
{
"localized_name": "use_default_template",
"name": "use_default_template",
"shape": 7,
"type": "BOOLEAN",
"widget": {
"name": "use_default_template"
},
"link": null
}
],
"outputs": [
{
"localized_name": "generated_text",
"name": "generated_text",
"type": "STRING",
"links": [
33
]
}
],
"properties": {
"Node name for S&R": "TextGenerate",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"",
512,
"on",
0.7,
64,
0.95,
0.05,
1.05,
0,
0,
false,
true
]
},
{
"id": 17,
"type": "StringConcatenate",
"pos": [
-210,
1310
],
"size": [
230,
40
],
"flags": {
"collapsed": true
},
"order": 10,
"mode": 0,
"inputs": [
{
"localized_name": "string_a",
"name": "string_a",
"type": "STRING",
"widget": {
"name": "string_a"
},
"link": 21
},
{
"localized_name": "string_b",
"name": "string_b",
"type": "STRING",
"widget": {
"name": "string_b"
},
"link": 22
},
{
"localized_name": "delimiter",
"name": "delimiter",
"type": "STRING",
"widget": {
"name": "delimiter"
},
"link": null
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
19
]
}
],
"properties": {
"Node name for S&R": "StringConcatenate",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"",
"",
""
]
},
{
"id": 18,
"type": "PrimitiveStringMultiline",
"pos": [
-430,
650
],
"size": [
460,
610
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "STRING",
"widget": {
"name": "value"
},
"link": null
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
21
]
}
],
"title": "Text String (System Prompt)",
"properties": {
"Node name for S&R": "PrimitiveStringMultiline",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"You are an expert prompt engineer for text-to-image models. Your task is to expand the user's prompt into a highly effective image-generation prompt.\n\nThink step by step about the request before writing the answer:\n- What is the subject and mood?\n- What visual styles, mediums, and lighting options would fit? Consider two or three alternatives and pick the one that best serves the caption.\n- What composition, framing, and grounded details will help the text-to-image model?\n\nThen output a single expanded prompt paragraph.\n\nFollow these rules strictly:\n1. **Faithfulness First:** Preserve all original subjects, actions, colors, and spatial relationships. Do not add new objects, props, characters, or animals unless the user clearly implies them.\n2. **Practical T2I Structure:** Write a prompt that a text-to-image model can parse cleanly. Group subjects with their own attributes and actions. Use grounded phrasing for poses, interactions, and spatial layout.\n3. **Style Planning Stays Internal:** Use your internal reasoning to choose style, medium, framing, and lighting. Do not emit planning tags or wrappers in the visible answer body.\n4. **Text Rendering:** If the user requests visible text, quotes, labels, or typography, specify the exact text clearly and wrap requested words in quotes.\n5. **Avoid Over-Specification:** Do not invent highly specific clothing, colors, materials, or scene details unless the input supports them.\n6. **Structure:** Write one cohesive paragraph after the thinking block. No bullets, JSON, or markdown.\n7. **Respect Existing Detail:** If the user's prompt is already detailed, lightly polish and finalize rather than heavily expanding \u2014 preserve their phrasing and direction.\n8. **Respect the Human Form:** Treat depictions of people with dignity. Assume clothing covers genitals and intimate anatomy.\n9. **Preserve User Medium:** When the user explicitly requests a medium (e.g. \"photo of\", \"photograph of\", \"illustration of\", \"painting of\", \"sketch of\", \"3D render of\"), honor it. Do not pivot to a different medium to avoid difficulty \u2014 match the user's stated intent.\n\nUser's Input:\n\n"
]
},
{
"id": 19,
"type": "PrimitiveStringMultiline",
"pos": [
-1070,
-290
],
"size": [
570,
800
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "STRING",
"widget": {
"name": "value"
},
"link": 45
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
22,
34
]
}
],
"title": "Text String (User Prompt)",
"properties": {
"Node name for S&R": "PrimitiveStringMultiline",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"A high-resolution, surreal digital illustration showing a women's hand in red glove holding a martini glass. The image is overlaid with whimsical, expressive ink-style doodles, including a cartoon figure inside the glass, a drawn citrus wedge on the rim, and various abstract sketches and faces surrounding the glass against a clean, white background. The style seamlessly blends a realistic, lit photograph with loose, hand-drawn marker artistry, creating a playful and artistic juxtaposition."
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 20,
"type": "PreviewAny",
"pos": [
500,
660
],
"size": [
470,
550
],
"flags": {
"collapsed": false
},
"order": 12,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 27
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
41,
37
]
}
],
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
null,
null,
null
]
},
{
"id": 21,
"type": "ComfySwitchNode",
"pos": [
170,
1270
],
"size": [
270,
130
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"localized_name": "on_false",
"name": "on_false",
"type": "STRING",
"link": 34
},
{
"localized_name": "on_true",
"name": "on_true",
"type": "STRING",
"link": 33
},
{
"localized_name": "switch",
"name": "switch",
"type": "BOOLEAN",
"widget": {
"name": "switch"
},
"link": 32
}
],
"outputs": [
{
"localized_name": "output",
"name": "output",
"type": "STRING",
"links": [
27
]
}
],
"properties": {
"Node name for S&R": "ComfySwitchNode",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
false
]
},
{
"id": 22,
"type": "ComfySwitchNode",
"pos": [
640,
-270
],
"size": [
320,
130
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"localized_name": "on_false",
"name": "on_false",
"type": "MODEL",
"link": 28
},
{
"localized_name": "on_true",
"name": "on_true",
"type": "MODEL",
"link": 29
},
{
"localized_name": "switch",
"name": "switch",
"type": "BOOLEAN",
"widget": {
"name": "switch"
},
"link": 31
}
],
"outputs": [
{
"localized_name": "output",
"name": "output",
"type": "MODEL",
"links": [
30
]
}
],
"title": "Switch (Model)",
"properties": {
"Node name for S&R": "ComfySwitchNode",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
false
]
},
{
"id": 24,
"type": "PrimitiveBoolean",
"pos": [
-910,
840
],
"size": [
270,
110
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "BOOLEAN",
"widget": {
"name": "value"
},
"link": 46
}
],
"outputs": [
{
"localized_name": "BOOLEAN",
"name": "BOOLEAN",
"type": "BOOLEAN",
"links": [
32
]
}
],
"title": "Boolean (Refine Prompt?)",
"properties": {
"Node name for S&R": "PrimitiveBoolean",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
true
]
},
{
"id": 27,
"type": "StringConcatenate",
"pos": [
1030,
960
],
"size": [
350,
250
],
"flags": {
"collapsed": false
},
"order": 17,
"mode": 0,
"inputs": [
{
"localized_name": "string_a",
"name": "string_a",
"type": "STRING",
"widget": {
"name": "string_a"
},
"link": 41
},
{
"localized_name": "string_b",
"name": "string_b",
"type": "STRING",
"widget": {
"name": "string_b"
},
"link": 60
},
{
"localized_name": "delimiter",
"name": "delimiter",
"type": "STRING",
"widget": {
"name": "delimiter"
},
"link": null
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
38
]
}
],
"title": "Concatenate Text (LoRA Trigger Word)",
"properties": {
"Node name for S&R": "StringConcatenate",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"",
"muted minimalist sketch style",
", "
]
},
{
"id": 28,
"type": "ComfySwitchNode",
"pos": [
1050,
670
],
"size": [
340,
130
],
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"localized_name": "on_false",
"name": "on_false",
"type": "STRING",
"link": 37
},
{
"localized_name": "on_true",
"name": "on_true",
"type": "STRING",
"link": 38
},
{
"localized_name": "switch",
"name": "switch",
"type": "BOOLEAN",
"widget": {
"name": "switch"
},
"link": 42
}
],
"outputs": [
{
"localized_name": "output",
"name": "output",
"type": "STRING",
"links": [
40
]
}
],
"properties": {
"Node name for S&R": "ComfySwitchNode",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
false
]
},
{
"id": 23,
"type": "PrimitiveBoolean",
"pos": [
-910,
670
],
"size": [
270,
110
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"localized_name": "value",
"name": "value",
"type": "BOOLEAN",
"widget": {
"name": "value"
},
"link": 57
}
],
"outputs": [
{
"localized_name": "BOOLEAN",
"name": "BOOLEAN",
"type": "BOOLEAN",
"links": [
31,
42
]
}
],
"title": "Boolean (Enable LoRA?)",
"properties": {
"Node name for S&R": "PrimitiveBoolean",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
false
]
},
{
"id": 12,
"type": "VAELoader",
"pos": [
-410,
390
],
"size": [
450,
120
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"localized_name": "vae_name",
"name": "vae_name",
"type": "COMBO",
"widget": {
"name": "vae_name"
},
"link": 63
}
],
"outputs": [
{
"localized_name": "VAE",
"name": "VAE",
"type": "VAE",
"links": [
631,
634
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.25.0",
"models": [
{
"name": "qwen_image_vae.safetensors",
"url": "https://huggingface.co/Comfy-Org/Krea-2/resolve/main/vae/qwen_image_vae.safetensors",
"directory": "vae"
}
]
},
"widgets_values": [
"qwen_image_vae.safetensors"
]
},
{
"id": 3,
"type": "LanPaint_KSampler",
"pos": [
640,
-100
],
"size": [
320,
590
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": 30
},
{
"localized_name": "positive",
"name": "positive",
"type": "CONDITIONING",
"link": 4
},
{
"localized_name": "negative",
"name": "negative",
"type": "CONDITIONING",
"link": 14
},
{
"localized_name": "latent_image",
"name": "latent_image",
"type": "LATENT",
"link": 632
},
{
"localized_name": "seed",
"name": "seed",
"type": "INT",
"widget": {
"name": "seed"
},
"link": 56
},
{
"localized_name": "steps",
"name": "steps",
"type": "INT",
"widget": {
"name": "steps"
},
"link": null
},
{
"localized_name": "cfg",
"name": "cfg",
"type": "FLOAT",
"widget": {
"name": "cfg"
},
"link": null
},
{
"localized_name": "sampler_name",
"name": "sampler_name",
"type": "COMBO",
"widget": {
"name": "sampler_name"
},
"link": null
},
{
"localized_name": "scheduler",
"name": "scheduler",
"type": "COMBO",
"widget": {
"name": "scheduler"
},
"link": null
},
{
"localized_name": "denoise",
"name": "denoise",
"type": "FLOAT",
"widget": {
"name": "denoise"
},
"link": null
},
{
"localized_name": "LanPaint_NumSteps",
"name": "LanPaint_NumSteps",
"type": "INT",
"widget": {
"name": "LanPaint_NumSteps"
},
"link": null
},
{
"localized_name": "LanPaint_PromptMode",
"name": "LanPaint_PromptMode",
"type": "COMBO",
"widget": {
"name": "LanPaint_PromptMode"
},
"link": null
},
{
"localized_name": "LanPaint_Info",
"name": "LanPaint_Info",
"type": "STRING",
"widget": {
"name": "LanPaint_Info"
},
"link": null
},
{
"localized_name": "Inpainting_mode",
"name": "Inpainting_mode",
"type": "COMBO",
"widget": {
"name": "Inpainting_mode"
},
"link": null
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
633
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "LanPaint",
"ver": "0.25.0"
},
"widgets_values": [
0,
1,
15,
1,
"euler",
"simple",
1,
5,
"Image First",
"LanPaint KSampler.",
"\ud83d\uddbc\ufe0f Image Inpainting",
"lanpaint_star_button"
]
},
{
"id": 411,
"type": "LanPaint_ImageEncode",
"pos": [
7110,
2000
],
"size": [
270,
110
],
"flags": {},
"order": 50,
"mode": 0,
"inputs": [
{
"localized_name": "image",
"name": "image",
"type": "IMAGE",
"link": 629
},
{
"localized_name": "vae",
"name": "vae",
"type": "VAE",
"link": 631
},
{
"localized_name": "mask",
"name": "mask",
"type": "MASK",
"link": 630
}
],
"outputs": [
{
"localized_name": "latent",
"name": "latent",
"type": "LATENT",
"links": [
632
]
}
],
"properties": {
"Node name for S&R": "LanPaint_ImageEncode",
"cnr_id": "LanPaint"
},
"widgets_values": []
},
{
"id": 412,
"type": "LanPaint_ImageDecode",
"pos": [
7420,
2000
],
"size": [
270,
150
],
"flags": {},
"order": 51,
"mode": 0,
"inputs": [
{
"localized_name": "samples",
"name": "samples",
"type": "LATENT",
"link": 633
},
{
"localized_name": "vae",
"name": "vae",
"type": "VAE",
"link": 634
},
{
"localized_name": "image",
"name": "image",
"type": "IMAGE",
"link": 635
},
{
"localized_name": "mask",
"name": "mask",
"type": "MASK",
"link": 636
},
{
"localized_name": "blend_overlap",
"name": "blend_overlap",
"type": "INT",
"widget": {
"name": "blend_overlap"
},
"link": null
}
],
"outputs": [
{
"localized_name": "image",
"name": "image",
"type": "IMAGE",
"links": [
637
]
}
],
"properties": {
"Node name for S&R": "LanPaint_ImageDecode",
"cnr_id": "LanPaint"
},
"widgets_values": [
9
]
}
],
"groups": [
{
"id": 1,
"title": "Models",
"bounding": [
-430,
-320,
490,
850
],
"color": "#3f789e",
"flags": {}
},
{
"id": 4,
"title": "Prompt Enhancement",
"bounding": [
-440,
580,
1940,
840
],
"color": "#3f789e",
"flags": {}
},
{
"id": 5,
"title": "Group",
"bounding": [
-1080,
-360,
610,
910
],
"color": "#3f789e",
"flags": {}
},
{
"id": 6,
"title": "Image Generation",
"bounding": [
-440,
-360,
1940,
910
],
"color": "#3f789e",
"flags": {}
},
{
"id": 7,
"title": "Prompt",
"bounding": [
90,
-320,
500,
570
],
"color": "#3f789e",
"flags": {}
},
{
"id": 8,
"title": "Size",
"bounding": [
90,
270,
500,
260
],
"color": "#3f789e",
"flags": {}
},
{
"id": 9,
"title": "Feature Switch",
"bounding": [
-1080,
580,
610,
400
],
"color": "#3f789e",
"flags": {}
}
],
"links": [
{
"id": 10,
"origin_id": 11,
"origin_slot": 0,
"target_id": 6,
"target_slot": 0,
"type": "CLIP"
},
{
"id": 40,
"origin_id": 28,
"origin_slot": 0,
"target_id": 6,
"target_slot": 1,
"type": "STRING"
},
{
"id": 30,
"origin_id": 22,
"origin_slot": 0,
"target_id": 3,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 4,
"origin_id": 6,
"origin_slot": 0,
"target_id": 3,
"target_slot": 1,
"type": "CONDITIONING"
},
{
"id": 14,
"origin_id": 13,
"origin_slot": 0,
"target_id": 3,
"target_slot": 2,
"type": "CONDITIONING"
},
{
"id": 13,
"origin_id": 6,
"origin_slot": 0,
"target_id": 13,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 16,
"origin_id": 10,
"origin_slot": 0,
"target_id": 15,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 18,
"origin_id": 11,
"origin_slot": 0,
"target_id": 16,
"target_slot": 0,
"type": "CLIP"
},
{
"id": 19,
"origin_id": 17,
"origin_slot": 0,
"target_id": 16,
"target_slot": 4,
"type": "STRING"
},
{
"id": 21,
"origin_id": 18,
"origin_slot": 0,
"target_id": 17,
"target_slot": 0,
"type": "STRING"
},
{
"id": 22,
"origin_id": 19,
"origin_slot": 0,
"target_id": 17,
"target_slot": 1,
"type": "STRING"
},
{
"id": 27,
"origin_id": 21,
"origin_slot": 0,
"target_id": 20,
"target_slot": 0,
"type": "STRING"
},
{
"id": 34,
"origin_id": 19,
"origin_slot": 0,
"target_id": 21,
"target_slot": 0,
"type": "STRING"
},
{
"id": 33,
"origin_id": 16,
"origin_slot": 0,
"target_id": 21,
"target_slot": 1,
"type": "STRING"
},
{
"id": 32,
"origin_id": 24,
"origin_slot": 0,
"target_id": 21,
"target_slot": 2,
"type": "BOOLEAN"
},
{
"id": 28,
"origin_id": 10,
"origin_slot": 0,
"target_id": 22,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 29,
"origin_id": 15,
"origin_slot": 0,
"target_id": 22,
"target_slot": 1,
"type": "MODEL"
},
{
"id": 31,
"origin_id": 23,
"origin_slot": 0,
"target_id": 22,
"target_slot": 2,
"type": "BOOLEAN"
},
{
"id": 41,
"origin_id": 20,
"origin_slot": 0,
"target_id": 27,
"target_slot": 0,
"type": "STRING"
},
{
"id": 37,
"origin_id": 20,
"origin_slot": 0,
"target_id": 28,
"target_slot": 0,
"type": "STRING"
},
{
"id": 38,
"origin_id": 27,
"origin_slot": 0,
"target_id": 28,
"target_slot": 1,
"type": "STRING"
},
{
"id": 42,
"origin_id": 23,
"origin_slot": 0,
"target_id": 28,
"target_slot": 2,
"type": "BOOLEAN"
},
{
"id": 45,
"origin_id": -10,
"origin_slot": 0,
"target_id": 19,
"target_slot": 0,
"type": "STRING"
},
{
"id": 46,
"origin_id": -10,
"origin_slot": 1,
"target_id": 24,
"target_slot": 0,
"type": "BOOLEAN"
},
{
"id": 49,
"origin_id": -10,
"origin_slot": 2,
"target_id": 16,
"target_slot": 5,
"type": "INT"
},
{
"id": 56,
"origin_id": -10,
"origin_slot": 3,
"target_id": 3,
"target_slot": 4,
"type": "INT"
},
{
"id": 57,
"origin_id": -10,
"origin_slot": 4,
"target_id": 23,
"target_slot": 0,
"type": "BOOLEAN"
},
{
"id": 58,
"origin_id": -10,
"origin_slot": 5,
"target_id": 15,
"target_slot": 1,
"type": "COMBO"
},
{
"id": 59,
"origin_id": -10,
"origin_slot": 6,
"target_id": 15,
"target_slot": 2,
"type": "FLOAT"
},
{
"id": 60,
"origin_id": -10,
"origin_slot": 7,
"target_id": 27,
"target_slot": 1,
"type": "STRING"
},
{
"id": 61,
"origin_id": -10,
"origin_slot": 8,
"target_id": 10,
"target_slot": 0,
"type": "COMBO"
},
{
"id": 62,
"origin_id": -10,
"origin_slot": 9,
"target_id": 11,
"target_slot": 0,
"type": "COMBO"
},
{
"id": 63,
"origin_id": -10,
"origin_slot": 10,
"target_id": 12,
"target_slot": 0,
"type": "COMBO"
},
{
"id": 629,
"origin_id": -10,
"origin_slot": 11,
"target_id": 411,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 630,
"origin_id": -10,
"origin_slot": 12,
"target_id": 411,
"target_slot": 2,
"type": "MASK"
},
{
"id": 631,
"origin_id": 12,
"origin_slot": 0,
"target_id": 411,
"target_slot": 1,
"type": "VAE"
},
{
"id": 632,
"origin_id": 411,
"origin_slot": 0,
"target_id": 3,
"target_slot": 3,
"type": "LATENT"
},
{
"id": 633,
"origin_id": 3,
"origin_slot": 0,
"target_id": 412,
"target_slot": 0,
"type": "LATENT"
},
{
"id": 634,
"origin_id": 12,
"origin_slot": 0,
"target_id": 412,
"target_slot": 1,
"type": "VAE"
},
{
"id": 635,
"origin_id": -10,
"origin_slot": 11,
"target_id": 412,
"target_slot": 2,
"type": "IMAGE"
},
{
"id": 636,
"origin_id": -10,
"origin_slot": 12,
"target_id": 412,
"target_slot": 3,
"type": "MASK"
},
{
"id": 637,
"origin_id": 412,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "IMAGE"
}
],
"extra": {}
}
]
},
"config": {},
"extra": {
"frontendVersion": "1.45.19",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true,
"ds": {
"scale": 1.537274438720535,
"offset": [
27.961010983492418,
114.39660597537825
]
}
},
"version": 0.4
}