The two example sections were written from the inside of the graph: node class names, the `<image1>` / `<image2>` notation, which loader to point where, and an aside about which of the two 2.1 encoders keeps alpha. None of that helps someone deciding whether to try the example. Both sections now say what a user does and what comes back, in two sentences each, and the news lines and the Updates entry follow. Example 31 also gains the Workflow JSON link it was missing. The MarkdownNote embedded in the Example 32 workflow gets the same treatment: it keeps `<image1>` / `<image2>` (the instruction needs those) and drops the `Join Image With Alpha` / `Load Image` MASK-output explanation. The result image is byte-identical to the committed one; only the embedded workflow metadata changed, which is why nothing was re-run.
1005 lines
16 KiB
JSON
1005 lines
16 KiB
JSON
{
|
|
"id": "8f2d6b41-5c07-4a9e-b3d1-7e0a2c9f4b58",
|
|
"revision": 0,
|
|
"last_node_id": 14,
|
|
"last_link_id": 19,
|
|
"nodes": [
|
|
{
|
|
"id": 1,
|
|
"type": "UNETLoader",
|
|
"pos": [
|
|
-1320,
|
|
40
|
|
],
|
|
"size": [
|
|
390,
|
|
82
|
|
],
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "MODEL",
|
|
"name": "MODEL",
|
|
"type": "MODEL",
|
|
"slot_index": 0,
|
|
"links": [
|
|
1
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "UNETLoader",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"qwen_image_2.1_int8_convrot.safetensors",
|
|
"default"
|
|
]
|
|
},
|
|
{
|
|
"id": 2,
|
|
"type": "CLIPLoader",
|
|
"pos": [
|
|
-1320,
|
|
170
|
|
],
|
|
"size": [
|
|
390,
|
|
106
|
|
],
|
|
"flags": {},
|
|
"order": 2,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "CLIP",
|
|
"name": "CLIP",
|
|
"type": "CLIP",
|
|
"slot_index": 0,
|
|
"links": [
|
|
3
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "CLIPLoader",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"qwen3vl_8b_int8_convrot.safetensors",
|
|
"qwen_image",
|
|
"default"
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"type": "VAELoader",
|
|
"pos": [
|
|
-1320,
|
|
320
|
|
],
|
|
"size": [
|
|
390,
|
|
58
|
|
],
|
|
"flags": {},
|
|
"order": 3,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "VAE",
|
|
"name": "VAE",
|
|
"type": "VAE",
|
|
"slot_index": 0,
|
|
"links": [
|
|
4,
|
|
5,
|
|
6
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "VAELoader",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"qwen_image_2.1_vae_bf16.safetensors"
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"type": "QwenImage21Cache",
|
|
"pos": [
|
|
-880,
|
|
40
|
|
],
|
|
"size": [
|
|
310,
|
|
82
|
|
],
|
|
"flags": {},
|
|
"order": 4,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "model",
|
|
"name": "model",
|
|
"type": "MODEL",
|
|
"link": 1
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "MODEL",
|
|
"name": "MODEL",
|
|
"type": "MODEL",
|
|
"slot_index": 0,
|
|
"links": [
|
|
2
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "QwenImage21Cache",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"auto",
|
|
"default"
|
|
]
|
|
},
|
|
{
|
|
"id": 5,
|
|
"type": "LoadImage",
|
|
"pos": [
|
|
-1320,
|
|
420
|
|
],
|
|
"size": [
|
|
390,
|
|
420
|
|
],
|
|
"flags": {},
|
|
"order": 5,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "IMAGE",
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"slot_index": 0,
|
|
"links": [
|
|
7
|
|
]
|
|
},
|
|
{
|
|
"localized_name": "MASK",
|
|
"name": "MASK",
|
|
"type": "MASK",
|
|
"slot_index": 1,
|
|
"links": [
|
|
8
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "LoadImage",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"Image_Load_Me_in_Loader.png",
|
|
"image"
|
|
],
|
|
"title": "<image1> - the canvas (RGBA: the alpha is the background)"
|
|
},
|
|
{
|
|
"id": 6,
|
|
"type": "JoinImageWithAlpha",
|
|
"pos": [
|
|
-880,
|
|
420
|
|
],
|
|
"size": [
|
|
330,
|
|
60
|
|
],
|
|
"flags": {},
|
|
"order": 6,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "image",
|
|
"name": "image",
|
|
"type": "IMAGE",
|
|
"link": 7
|
|
},
|
|
{
|
|
"localized_name": "alpha",
|
|
"name": "alpha",
|
|
"type": "MASK",
|
|
"link": 8
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "IMAGE",
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"slot_index": 0,
|
|
"links": [
|
|
9,
|
|
10,
|
|
11
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "JoinImageWithAlpha",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [],
|
|
"title": "Re-attach the alpha as the 4th channel"
|
|
},
|
|
{
|
|
"id": 7,
|
|
"type": "LoadImage",
|
|
"pos": [
|
|
-880,
|
|
540
|
|
],
|
|
"size": [
|
|
330,
|
|
420
|
|
],
|
|
"flags": {},
|
|
"order": 7,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "IMAGE",
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"slot_index": 0,
|
|
"links": [
|
|
12
|
|
]
|
|
},
|
|
{
|
|
"localized_name": "MASK",
|
|
"name": "MASK",
|
|
"type": "MASK",
|
|
"slot_index": 1,
|
|
"links": []
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "LoadImage",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"Material_Load_Me_in_Loader.png",
|
|
"image"
|
|
],
|
|
"title": "<image2> - the material to borrow"
|
|
},
|
|
{
|
|
"id": 8,
|
|
"type": "LoadImageMask",
|
|
"pos": [
|
|
-1320,
|
|
900
|
|
],
|
|
"size": [
|
|
390,
|
|
460
|
|
],
|
|
"flags": {},
|
|
"order": 8,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "MASK",
|
|
"name": "MASK",
|
|
"type": "MASK",
|
|
"slot_index": 0,
|
|
"links": [
|
|
13,
|
|
14
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "LoadImageMask",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"Mask_Load_Me_in_Loader.png",
|
|
"red"
|
|
],
|
|
"title": "The mask, on its own (white = edit here)"
|
|
},
|
|
{
|
|
"id": 9,
|
|
"type": "TextEncodeQwenImage21",
|
|
"pos": [
|
|
-500,
|
|
40
|
|
],
|
|
"size": [
|
|
440,
|
|
300
|
|
],
|
|
"flags": {},
|
|
"order": 9,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "clip",
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"link": 3
|
|
},
|
|
{
|
|
"localized_name": "image_1",
|
|
"name": "images.image_1",
|
|
"type": "IMAGE",
|
|
"link": 9,
|
|
"shape": 7
|
|
},
|
|
{
|
|
"localized_name": "vae",
|
|
"name": "vae",
|
|
"type": "VAE",
|
|
"link": 4,
|
|
"shape": 7
|
|
},
|
|
{
|
|
"localized_name": "prompt",
|
|
"name": "prompt",
|
|
"type": "STRING",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "prompt"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "negative_prompt",
|
|
"name": "negative_prompt",
|
|
"type": "STRING",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "negative_prompt"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "resolution",
|
|
"name": "resolution",
|
|
"type": "INT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "resolution"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "image_2",
|
|
"name": "images.image_2",
|
|
"type": "IMAGE",
|
|
"link": 12,
|
|
"shape": 7
|
|
},
|
|
{
|
|
"localized_name": "image_3",
|
|
"name": "images.image_3",
|
|
"type": "IMAGE",
|
|
"link": null,
|
|
"shape": 7
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "positive",
|
|
"name": "positive",
|
|
"type": "CONDITIONING",
|
|
"slot_index": 0,
|
|
"links": [
|
|
15
|
|
]
|
|
},
|
|
{
|
|
"localized_name": "negative",
|
|
"name": "negative",
|
|
"type": "CONDITIONING",
|
|
"slot_index": 1,
|
|
"links": [
|
|
16
|
|
]
|
|
},
|
|
{
|
|
"localized_name": "latent",
|
|
"name": "latent",
|
|
"type": "LATENT",
|
|
"slot_index": 2,
|
|
"links": []
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "TextEncodeQwenImage21",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"The earcups of the headphones in <image1> are rebuilt as oversized iridescent turbine cups faced with the oil-slick titanium from <image2>: larger than the originals and flaring out past their old outline into the empty space around them, radiating machined blades, mirror-polished rainbow metal with flowing cyan, magenta, violet and gold bands and a fine brushed grain. The headband, its stitching, the yokes and the hinges stay exactly as they are in <image1>. Studio product photography on a transparent background.",
|
|
"",
|
|
1024
|
|
],
|
|
"title": "Text Encode Qwen Image 2.1 (the edit instruction + both references)",
|
|
"color": "#232",
|
|
"bgcolor": "#353"
|
|
},
|
|
{
|
|
"id": 10,
|
|
"type": "LanPaint_ImageEncode",
|
|
"pos": [
|
|
0,
|
|
40
|
|
],
|
|
"size": [
|
|
300,
|
|
110
|
|
],
|
|
"flags": {},
|
|
"order": 10,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "image",
|
|
"name": "image",
|
|
"type": "IMAGE",
|
|
"link": 10
|
|
},
|
|
{
|
|
"localized_name": "vae",
|
|
"name": "vae",
|
|
"type": "VAE",
|
|
"link": 5
|
|
},
|
|
{
|
|
"localized_name": "mask",
|
|
"name": "mask",
|
|
"type": "MASK",
|
|
"link": 13
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "LATENT",
|
|
"name": "LATENT",
|
|
"type": "LATENT",
|
|
"slot_index": 0,
|
|
"links": [
|
|
17
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "LanPaint_ImageEncode",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": []
|
|
},
|
|
{
|
|
"id": 11,
|
|
"type": "LanPaint_KSampler",
|
|
"pos": [
|
|
0,
|
|
190
|
|
],
|
|
"size": [
|
|
330,
|
|
320
|
|
],
|
|
"flags": {},
|
|
"order": 11,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "model",
|
|
"name": "model",
|
|
"type": "MODEL",
|
|
"link": 2
|
|
},
|
|
{
|
|
"localized_name": "positive",
|
|
"name": "positive",
|
|
"type": "CONDITIONING",
|
|
"link": 15
|
|
},
|
|
{
|
|
"localized_name": "negative",
|
|
"name": "negative",
|
|
"type": "CONDITIONING",
|
|
"link": 16
|
|
},
|
|
{
|
|
"localized_name": "latent_image",
|
|
"name": "latent_image",
|
|
"type": "LATENT",
|
|
"link": 17
|
|
},
|
|
{
|
|
"localized_name": "seed",
|
|
"name": "seed",
|
|
"type": "INT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "seed"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "steps",
|
|
"name": "steps",
|
|
"type": "INT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "steps"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "cfg",
|
|
"name": "cfg",
|
|
"type": "FLOAT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "cfg"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "sampler_name",
|
|
"name": "sampler_name",
|
|
"type": "COMBO",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "sampler_name"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "scheduler",
|
|
"name": "scheduler",
|
|
"type": "COMBO",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "scheduler"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "denoise",
|
|
"name": "denoise",
|
|
"type": "FLOAT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "denoise"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "LanPaint_NumSteps",
|
|
"name": "LanPaint_NumSteps",
|
|
"type": "INT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "LanPaint_NumSteps"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "LanPaint_PromptMode",
|
|
"name": "LanPaint_PromptMode",
|
|
"type": "COMBO",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "LanPaint_PromptMode"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "LanPaint_Info",
|
|
"name": "LanPaint_Info",
|
|
"type": "STRING",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "LanPaint_Info"
|
|
}
|
|
},
|
|
{
|
|
"localized_name": "Inpainting_mode",
|
|
"name": "Inpainting_mode",
|
|
"type": "COMBO",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "Inpainting_mode"
|
|
}
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "LATENT",
|
|
"name": "LATENT",
|
|
"type": "LATENT",
|
|
"slot_index": 0,
|
|
"links": [
|
|
18
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "LanPaint_KSampler",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
777,
|
|
"fixed",
|
|
20,
|
|
4.0,
|
|
"euler",
|
|
"simple",
|
|
1.0,
|
|
5,
|
|
"Image First",
|
|
"LanPaint KSampler. For more info, visit https://github.com/scraed/LanPaint. If you find it useful, please give a star ⭐!",
|
|
"🖼️ Image Inpainting",
|
|
"lanpaint_star_button"
|
|
]
|
|
},
|
|
{
|
|
"id": 12,
|
|
"type": "LanPaint_ImageDecode",
|
|
"pos": [
|
|
400,
|
|
40
|
|
],
|
|
"size": [
|
|
300,
|
|
120
|
|
],
|
|
"flags": {},
|
|
"order": 12,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "samples",
|
|
"name": "samples",
|
|
"type": "LATENT",
|
|
"link": 18
|
|
},
|
|
{
|
|
"localized_name": "vae",
|
|
"name": "vae",
|
|
"type": "VAE",
|
|
"link": 6
|
|
},
|
|
{
|
|
"localized_name": "image",
|
|
"name": "image",
|
|
"type": "IMAGE",
|
|
"link": 11
|
|
},
|
|
{
|
|
"localized_name": "mask",
|
|
"name": "mask",
|
|
"type": "MASK",
|
|
"link": 14
|
|
},
|
|
{
|
|
"localized_name": "blend_overlap",
|
|
"name": "blend_overlap",
|
|
"type": "INT",
|
|
"link": null,
|
|
"widget": {
|
|
"name": "blend_overlap"
|
|
}
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "IMAGE",
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"slot_index": 0,
|
|
"links": [
|
|
19
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "LanPaint_ImageDecode",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
9
|
|
],
|
|
"title": "Decode and merge (keeps RGBA)"
|
|
},
|
|
{
|
|
"id": 13,
|
|
"type": "SaveImage",
|
|
"pos": [
|
|
400,
|
|
220
|
|
],
|
|
"size": [
|
|
400,
|
|
420
|
|
],
|
|
"flags": {},
|
|
"order": 13,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "images",
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 19
|
|
}
|
|
],
|
|
"outputs": [],
|
|
"properties": {
|
|
"Node name for S&R": "SaveImage",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"Qwen2.1_Edit_Masked"
|
|
]
|
|
},
|
|
{
|
|
"id": 14,
|
|
"type": "MarkdownNote",
|
|
"pos": [
|
|
-1320,
|
|
1400
|
|
],
|
|
"size": [
|
|
900,
|
|
600
|
|
],
|
|
"flags": {},
|
|
"order": 14,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [],
|
|
"properties": {
|
|
"Node name for S&R": "MarkdownNote",
|
|
"cnr_id": "comfy-core"
|
|
},
|
|
"widgets_values": [
|
|
"## Qwen-Image 2.1 Image Edit + LanPaint, with a mask and with transparency\n\nThe official `Qwen Image 2.1 Image Edit` template with a mask bolted on. The instruction\nrefers to the two pictures as `<image1>` (the one being edited) and `<image2>` (the material\nbeing borrowed).\n\nOnly what you paint over changes - everything outside the mask is anchored to the original on\nevery step, so the headband, the stitching and the hinges come back untouched rather than\nmerely similar.\n\nThe picture's transparency is edited along with its colours, so the rebuilt part can grow a\nnew outline over what used to be empty background. The mask is a separate greyscale file,\nwhite = edit here, and it is deliberately larger than the earcups so the new shape has room\nto flare out."
|
|
],
|
|
"title": "How this works",
|
|
"color": "#432",
|
|
"bgcolor": "#653"
|
|
}
|
|
],
|
|
"links": [
|
|
[
|
|
1,
|
|
1,
|
|
0,
|
|
4,
|
|
0,
|
|
"MODEL"
|
|
],
|
|
[
|
|
2,
|
|
4,
|
|
0,
|
|
11,
|
|
0,
|
|
"MODEL"
|
|
],
|
|
[
|
|
3,
|
|
2,
|
|
0,
|
|
9,
|
|
0,
|
|
"CLIP"
|
|
],
|
|
[
|
|
4,
|
|
3,
|
|
0,
|
|
9,
|
|
2,
|
|
"VAE"
|
|
],
|
|
[
|
|
5,
|
|
3,
|
|
0,
|
|
10,
|
|
1,
|
|
"VAE"
|
|
],
|
|
[
|
|
6,
|
|
3,
|
|
0,
|
|
12,
|
|
1,
|
|
"VAE"
|
|
],
|
|
[
|
|
7,
|
|
5,
|
|
0,
|
|
6,
|
|
0,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
8,
|
|
5,
|
|
1,
|
|
6,
|
|
1,
|
|
"MASK"
|
|
],
|
|
[
|
|
9,
|
|
6,
|
|
0,
|
|
9,
|
|
1,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
10,
|
|
6,
|
|
0,
|
|
10,
|
|
0,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
11,
|
|
6,
|
|
0,
|
|
12,
|
|
2,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
12,
|
|
7,
|
|
0,
|
|
9,
|
|
6,
|
|
"IMAGE"
|
|
],
|
|
[
|
|
13,
|
|
8,
|
|
0,
|
|
10,
|
|
2,
|
|
"MASK"
|
|
],
|
|
[
|
|
14,
|
|
8,
|
|
0,
|
|
12,
|
|
3,
|
|
"MASK"
|
|
],
|
|
[
|
|
15,
|
|
9,
|
|
0,
|
|
11,
|
|
1,
|
|
"CONDITIONING"
|
|
],
|
|
[
|
|
16,
|
|
9,
|
|
1,
|
|
11,
|
|
2,
|
|
"CONDITIONING"
|
|
],
|
|
[
|
|
17,
|
|
10,
|
|
0,
|
|
11,
|
|
3,
|
|
"LATENT"
|
|
],
|
|
[
|
|
18,
|
|
11,
|
|
0,
|
|
12,
|
|
0,
|
|
"LATENT"
|
|
],
|
|
[
|
|
19,
|
|
12,
|
|
0,
|
|
13,
|
|
0,
|
|
"IMAGE"
|
|
]
|
|
],
|
|
"groups": [
|
|
{
|
|
"id": 1,
|
|
"title": "Step 1 - Load models",
|
|
"bounding": [
|
|
-1330,
|
|
0,
|
|
420,
|
|
380
|
|
],
|
|
"color": "#3f789e",
|
|
"font_size": 24,
|
|
"flags": {}
|
|
},
|
|
{
|
|
"id": 2,
|
|
"title": "Step 2 - <image1>, its alpha, <image2> and the mask",
|
|
"bounding": [
|
|
-1330,
|
|
380,
|
|
800,
|
|
990
|
|
],
|
|
"color": "#3f789e",
|
|
"font_size": 24,
|
|
"flags": {}
|
|
},
|
|
{
|
|
"id": 3,
|
|
"title": "Step 3 - The edit instruction",
|
|
"bounding": [
|
|
-510,
|
|
0,
|
|
460,
|
|
360
|
|
],
|
|
"color": "#3f789e",
|
|
"font_size": 24,
|
|
"flags": {}
|
|
},
|
|
{
|
|
"id": 4,
|
|
"title": "Step 4 - LanPaint: encode, sample, decode",
|
|
"bounding": [
|
|
-10,
|
|
0,
|
|
840,
|
|
520
|
|
],
|
|
"color": "#3f789e",
|
|
"font_size": 24,
|
|
"flags": {}
|
|
}
|
|
],
|
|
"config": {},
|
|
"extra": {
|
|
"ds": {
|
|
"scale": 0.5,
|
|
"offset": [
|
|
1330,
|
|
200
|
|
]
|
|
},
|
|
"workflowRendererVersion": "LG"
|
|
},
|
|
"version": 0.4
|
|
} |