docs: add Flux2Klein inpaint example workflow + update README

This commit is contained in:
/ai.oli
2026-03-12 20:11:29 +01:00
parent 4565fd51be
commit bfcdf777ca
2 changed files with 357 additions and 13 deletions
+76 -13
View File
@@ -4,15 +4,16 @@ Two utility nodes for outpainting and inpainting in ComfyUI.
## Installation
### Via ComfyUI Manager (recommended)
### Via ComfyUI Registry (recommended)
Search **"Aioli Nodes"** directly in the ComfyUI Manager → Install Nodes.
### Via Git URL
**Install via Git URL:**
```
https://github.com/aiolicollective/aioli-nodes
```
> ℹ️ A submission to the [ComfyUI Registry](https://registry.comfy.org) is in progress so the nodes will soon be installable directly from the built-in manager.
### Manual installation
1. Copy the `aioli-nodes` folder into `ComfyUI/custom_nodes/`
@@ -75,25 +76,87 @@ The node ensures the inpainted region stitches back **pixel-perfectly** onto the
**Outputs**
| Output | Type | Description |
|--------|------|-------------|
| image_cropped | IMAGE | Cropped image (upscaled if target is set) |
| mask_cropped | MASK | Cropped mask (upscaled if target is set) |
| image_cropped | IMAGE | Cropped image (scaled if target is set or if bbox > 2048px) |
| mask_cropped | MASK | Cropped mask (scaled if target is set or if bbox > 2048px) |
| x | INT | x position for ImageCompositeMasked |
| y | INT | y position for ImageCompositeMasked |
| orig_width | INT | Crop width BEFORE upscale (use for resize-back) |
| orig_height | INT | Crop height BEFORE upscale (use for resize-back) |
| width | INT | Final width |
| height | INT | Final height |
| orig_width | INT | Crop width BEFORE scale (use for resize-back after VAE Decode) |
| orig_height | INT | Crop height BEFORE scale (use for resize-back after VAE Decode) |
| width | INT | Final width (after scale) |
| height | INT | Final height (after scale) |
**Workflow without upscale**
**Scaling behaviour**
| Situation | Behaviour |
|-----------|----------|
| bbox ≤ 2048, target `none` | Round up to multiple only — no scale |
| bbox ≤ 2048, target set | Upscale crop to target — pixel-perfect ratio via GCD |
| bbox > 2048 (any target) | Downscale crop to fit 2048px — ratio preserved via GCD |
**Workflow without scale**
```
BBox Fix → VAE Encode → KSampler → VAE Decode → ImageCompositeMasked ← x, y
```
**Workflow with upscale**
**Workflow with upscale / downscale**
```
BBox Fix → VAE Encode → KSampler → VAE Decode
↓ orig_width, orig_height ↓
↓ x, y → Image Resize ←────────┘
↓ x, y → ImageResize+ ←────────┘
↓
ImageCompositeMasked ← x, y
```
---
## 🔁 Example Workflow — Flux2Klein Inpaint
> **[⬇ Download workflow JSON](examples/WF_Inpaint_aioli-nodes.json)**
A complete, ready-to-use inpaint workflow for **Flux2Klein** (9B), packaged as a ComfyUI subgraph (`FLUX2KLEIN_INPAINT`).
**Required models**
| Role | File |
|------|------|
| UNet | `flux2/flux-2-klein-9b-fp8.safetensors` |
| VAE | `flux2/flux2-vae.safetensors` |
| Text encoder | `qwen_3_8b_fp8mixed.safetensors` |
**Required custom nodes**
- **Aioli Nodes** (this repo) — `BBoxMultipleFix`
- **ComfyUI Essentials** — `MaskBoundingBox+`, `ImageResize+`
- **ComfyUI KJNodes** — `GrowMaskWithBlur`
- **rgthree-comfy** — `Image Comparer` (optional, for before/after preview)
**Subgraph inputs**
| Input | Description |
|-------|-------------|
| IMAGE | Source image (with painted mask) |
| MASK | Inpaint mask |
| Resize_Megapixels | Working resolution in megapixels (default: 4) |
| PROMPT | Inpaint prompt |
| Resize_Inpaint_Target | BBox target size (`none` · `512` · `768` · `1024` · `1536` · `2048`) |
**Internal pipeline**
```
LoadImageOutput (with mask painter)
└→ FLUX2KLEIN_INPAINT subgraph
├── ImageScaleToTotalPixels (resize source to working MP)
├── MaskBoundingBox+ (detect mask region)
├── BBoxMultipleFix (crop + scale for Flux, cap 2048px)
├── GrowMaskWithBlur (soften mask edges)
├── VAEEncode × 2 + SetLatentNoiseMask
├── CLIPTextEncode → ReferenceLatent → FluxGuidance
├── Flux2Scheduler + KSamplerSelect + RandomNoise
├── SamplerCustomAdvanced
├── VAEDecode
├── ImageResize+ (resize back to orig_width × orig_height)
└── ImageCompositeMasked (stitch result onto source)
└→ SaveImage + Image Comparer (before / after)
```
**Usage**
1. Download the JSON and drag it into ComfyUI
2. Point `LoadImageOutput` to your image and paint your mask
3. Set your prompt and target resolution in the subgraph inputs
4. Run — the result is composited pixel-perfectly back onto the source image
+281
View File
@@ -0,0 +1,281 @@
{
"id": "9845cb52-4265-4177-a8c0-92882a7aa937",
"revision": 0,
"last_node_id": 490,
"last_link_id": 1153,
"nodes": [
{
"id": 454,
"type": "SaveImage",
"pos": [
2853.8205652484253,
-3692.83348151422
],
"size": [
558.7844111498534,
962.0645818937251
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 1134
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 166,
"type": "Image Comparer (rgthree)",
"pos": [
3449.9379436320764,
-3691.469872127588
],
"size": [
558.0041091397599,
941.9317290030997
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"dir": 3,
"name": "image_a",
"type": "IMAGE",
"link": 1136
},
{
"dir": 3,
"name": "image_b",
"type": "IMAGE",
"link": 1135
}
],
"outputs": [],
"properties": {
"comparer_mode": "Slide",
"cnr_id": "rgthree-comfy",
"ver": "1.0.2511270846"
},
"widgets_values": [[]],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 399,
"type": "LoadImageOutput",
"pos": [
1869.364411511012,
-3675.427952938059
],
"size": [
324.7786074349633,
421.1971091595851
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [1150]
},
{
"name": "MASK",
"type": "MASK",
"links": [1151]
}
],
"properties": {
"Node name for S&R": "LoadImageOutput"
},
"widgets_values": [
"_output_images_will_be_put_here [output]",
false,
"refresh",
"image"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 489,
"type": "63323b8b-5f83-4f37-b521-5cd86415b4b2",
"pos": [
2227.6125047530395,
-3684.241600812175
],
"size": [
586.2092770823592,
428
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{"label": "IMAGE", "name": "on_false", "type": "IMAGE", "link": 1150},
{"label": "MASK", "name": "on_false_1", "type": "*", "link": 1151},
{"label": "Resize_Megapixels", "name": "value_1", "type": "FLOAT", "widget": {"name": "value_1"}, "link": null},
{"label": "PROMPT", "name": "text", "type": "STRING", "widget": {"name": "text"}, "link": null},
{"label": "Resize_Inpaint_Target", "name": "target", "type": "COMBO", "widget": {"name": "target"}, "link": null}
],
"outputs": [
{"label": "Output_IMAGE", "name": "IMAGE", "type": "IMAGE", "links": [1134, 1135]},
{"label": "Compare_IMAGE", "name": "IMAGE_1", "type": "IMAGE", "links": [1136]}
],
"properties": {},
"widgets_values": [4, "1536", ""],
"color": "#223",
"bgcolor": "#335"
}
],
"links": [
[1134, 489, 0, 454, 0, "IMAGE"],
[1135, 489, 0, 166, 1, "IMAGE"],
[1136, 489, 1, 166, 0, "IMAGE"],
[1150, 399, 0, 489, 0, "IMAGE"],
[1151, 399, 1, 489, 1, "MASK"]
],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "63323b8b-5f83-4f37-b521-5cd86415b4b2",
"version": 1,
"state": {"lastGroupId": 10, "lastNodeId": 490, "lastLinkId": 1153, "lastRerouteId": 0},
"revision": 0,
"config": {},
"name": "FLUX2KLEIN_INPAINT",
"inputNode": {"id": -10, "bounding": [-598.1974643329097, -3637.9099698843856, 162.54296875, 140]},
"outputNode": {"id": -20, "bounding": [5195.710411922829, -3607.9099698843856, 135.96484375, 80]},
"inputs": [
{"id": "2a172b37-8186-4be0-bc73-e6f85f4dc154", "name": "on_false", "type": "IMAGE", "linkIds": [1152], "label": "IMAGE", "pos": [-455.65, -3617.91]},
{"id": "f33b4a43-f744-456a-bdb5-9e65d3db37da", "name": "on_false_1", "type": "*", "linkIds": [1153], "label": "MASK", "pos": [-455.65, -3597.91]},
{"id": "9c0ddc65-d1a5-4ee7-82b1-948af805c28b", "name": "value_1", "type": "FLOAT", "linkIds": [1143], "label": "Resize_Megapixels", "pos": [-455.65, -3577.91]},
{"id": "e100493e-94d9-4b20-a574-b5ce94ba63f7", "name": "text", "type": "STRING", "linkIds": [1144], "label": "PROMPT", "pos": [-455.65, -3557.91]},
{"id": "82f7aa0d-9611-4826-9f9d-667cd4b8ecbe", "name": "target", "type": "COMBO", "linkIds": [1145], "label": "Resize_Inpaint_Target", "pos": [-455.65, -3537.91]}
],
"outputs": [
{"id": "9a44f46a-c984-430f-8547-eda83933286d", "name": "IMAGE", "type": "IMAGE", "linkIds": [1120, 1122], "label": "Output_IMAGE", "pos": [5215.71, -3587.91]},
{"id": "34ca2429-52e0-4726-9978-e55bd315e131", "name": "IMAGE_1", "type": "IMAGE", "linkIds": [1115], "label": "Compare_IMAGE", "pos": [5215.71, -3567.91]}
],
"widgets": [],
"nodes": [
{"id": 432, "type": "UNETLoader", "pos": [-414.37, -4494.43], "size": [364.43, 82], "flags": {}, "order": 4, "mode": 0, "inputs": [], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [1118]}], "properties": {"Node name for S&R": "UNETLoader"}, "widgets_values": ["flux2\\flux-2-klein-9b-fp8.safetensors", "default"]},
{"id": 438, "type": "VAELoader", "pos": [-417.96, -4207.73], "size": [364.43, 58], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [{"name": "VAE", "type": "VAE", "links": [993, 1051, 1060]}], "properties": {"Node name for S&R": "VAELoader"}, "widgets_values": ["flux2\\flux2-vae.safetensors"]},
{"id": 478, "type": "CLIPLoader", "pos": [-418.20, -4367.07], "size": [364.43, 106], "flags": {}, "order": 3, "mode": 0, "inputs": [], "outputs": [{"name": "CLIP", "type": "CLIP", "links": [1119]}], "properties": {"Node name for S&R": "CLIPLoader"}, "widgets_values": ["qwen_3_8b_fp8mixed.safetensors", "flux2", "default"]},
{"id": 488, "type": "PrimitiveFloat", "pos": [-85.39, -1839.24], "size": [270, 58], "flags": {}, "order": 27, "mode": 0, "inputs": [{"name": "value", "type": "FLOAT", "widget": {"name": "value"}, "link": 1143}], "outputs": [{"name": "FLOAT", "type": "FLOAT", "links": [1127, 1128]}], "title": "megapixels", "properties": {"Node name for S&R": "PrimitiveFloat"}, "widgets_values": [4]},
{"id": 475, "type": "MaskToImage", "pos": [-10.61, -1909.85], "size": [193.28, 26], "flags": {}, "order": 19, "mode": 0, "inputs": [{"name": "mask", "type": "MASK", "link": 1153}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [1109]}], "properties": {"Node name for S&R": "MaskToImage"}, "widgets_values": []},
{"id": 486, "type": "ImageScaleToTotalPixels", "pos": [283.75, -2077.32], "size": [270, 106], "flags": {}, "order": 25, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 1152}, {"name": "megapixels", "type": "FLOAT", "widget": {"name": "megapixels"}, "link": 1127}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [1112, 1113, 1114, 1115, 1116]}], "properties": {"Node name for S&R": "ImageScaleToTotalPixels"}, "widgets_values": ["lanczos", 1, 1]},
{"id": 487, "type": "ImageScaleToTotalPixels", "pos": [289.13, -1891.35], "size": [270, 106], "flags": {}, "order": 26, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 1109}, {"name": "megapixels", "type": "FLOAT", "widget": {"name": "megapixels"}, "link": 1128}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [1110]}], "properties": {"Node name for S&R": "ImageScaleToTotalPixels"}, "widgets_values": ["lanczos", 1, 1]},
{"id": 447, "type": "ImageToMask", "pos": [621.49, -1888.54], "size": [270, 58], "flags": {}, "order": 10, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 1110}], "outputs": [{"name": "MASK", "type": "MASK", "links": [1015, 1043]}], "properties": {"Node name for S&R": "ImageToMask"}, "widgets_values": ["red"]},
{"id": 449, "type": "CLIPTextEncode", "pos": [1388.48, -4252.65], "size": [440.32, 88], "flags": {}, "order": 11, "mode": 0, "inputs": [{"name": "clip", "type": "CLIP", "link": 1119}, {"name": "text", "type": "STRING", "widget": {"name": "text"}, "link": 1144}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [994, 998]}], "title": "CLIP Text Encode (Positive Prompt)", "properties": {"Node name for S&R": "CLIPTextEncode"}, "widgets_values": [""], "color": "#232", "bgcolor": "#353"},
{"id": 437, "type": "VAEEncode", "pos": [2012.44, -4226.73], "size": [190, 46], "flags": {}, "order": 5, "mode": 0, "inputs": [{"name": "pixels", "type": "IMAGE", "link": 1124}, {"name": "vae", "type": "VAE", "link": 993}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [995, 997]}], "properties": {"Node name for S&R": "VAEEncode"}, "widgets_values": []},
{"id": 439, "type": "ReferenceLatent", "pos": [2276.65, -4381.52], "size": [210, 46], "flags": {}, "order": 6, "mode": 0, "inputs": [{"name": "conditioning", "type": "CONDITIONING", "link": 994}, {"name": "latent", "type": "LATENT", "link": 995}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [1100]}], "properties": {"Node name for S&R": "ReferenceLatent"}, "widgets_values": []},
{"id": 441, "type": "ConditioningZeroOut", "pos": [2042.08, -4324.41], "size": [204.13, 26], "flags": {}, "order": 8, "mode": 0, "inputs": [{"name": "conditioning", "type": "CONDITIONING", "link": 998}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [996]}], "properties": {"Node name for S&R": "ConditioningZeroOut"}, "widgets_values": []},
{"id": 440, "type": "ReferenceLatent", "pos": [2283.78, -4258.25], "size": [210.70, 60.25], "flags": {}, "order": 7, "mode": 0, "inputs": [{"name": "conditioning", "type": "CONDITIONING", "link": 996}, {"name": "latent", "type": "LATENT", "link": 997}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [1125]}], "properties": {"Node name for S&R": "ReferenceLatent"}, "widgets_values": []},
{"id": 467, "type": "FluxGuidance", "pos": [2631.60, -4459.38], "size": [270, 58], "flags": {}, "order": 18, "mode": 0, "inputs": [{"name": "conditioning", "type": "CONDITIONING", "link": 1100}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "links": [1126]}], "properties": {"Node name for S&R": "FluxGuidance"}, "widgets_values": [4]},
{"id": 451, "type": "Flux2Scheduler", "pos": [2633.39, -4653.36], "size": [270, 106], "flags": {}, "order": 12, "mode": 0, "inputs": [{"name": "width", "type": "INT", "widget": {"name": "width"}, "link": 1002}, {"name": "height", "type": "INT", "widget": {"name": "height"}, "link": 1003}], "outputs": [{"name": "SIGMAS", "type": "SIGMAS", "links": [1013]}], "properties": {"Node name for S&R": "Flux2Scheduler"}, "widgets_values": [4, 1024, 1024]},
{"id": 444, "type": "CFGGuider", "pos": [2994.03, -4469.56], "size": [270, 98], "flags": {}, "order": 9, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 1118}, {"name": "positive", "type": "CONDITIONING", "link": 1126}, {"name": "negative", "type": "CONDITIONING", "link": 1125}], "outputs": [{"name": "GUIDER", "type": "GUIDER", "links": [1011]}], "properties": {"Node name for S&R": "CFGGuider"}, "widgets_values": [1]},
{"id": 460, "type": "KSamplerSelect", "pos": [2980.96, -4587.32], "size": [270, 58], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [{"name": "SAMPLER", "type": "SAMPLER", "links": [1012]}], "properties": {"Node name for S&R": "KSamplerSelect"}, "widgets_values": ["euler"]},
{"id": 461, "type": "RandomNoise", "pos": [2980.89, -4718.91], "size": [270, 82], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [{"name": "NOISE", "type": "NOISE", "links": [1010]}], "properties": {"Node name for S&R": "RandomNoise"}, "widgets_values": [334118193034850, "randomize"]},
{"id": 459, "type": "GetImageSize+", "pos": [2376.07, -4605.18], "size": [162.82, 66], "flags": {}, "order": 13, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 1116}], "outputs": [{"name": "width", "type": "INT", "links": [1002]}, {"name": "height", "type": "INT", "links": [1003]}, {"name": "count", "type": "INT", "links": []}], "properties": {"Node name for S&R": "GetImageSize+"}, "widgets_values": []},
{"id": 462, "type": "SamplerCustomAdvanced", "pos": [3369.09, -4718.03], "size": [410.85, 685.82], "flags": {}, "order": 14, "mode": 0, "inputs": [{"name": "noise", "type": "NOISE", "link": 1010}, {"name": "guider", "type": "GUIDER", "link": 1011}, {"name": "sampler", "type": "SAMPLER", "link": 1012}, {"name": "sigmas", "type": "SIGMAS", "link": 1013}, {"name": "latent_image", "type": "LATENT", "link": 1123}], "outputs": [{"name": "output", "type": "LATENT", "links": []}, {"name": "denoised_output", "type": "LATENT", "links": [1050]}], "properties": {"Node name for S&R": "SamplerCustomAdvanced"}, "widgets_values": []},
{"id": 463, "type": "VAEDecode", "pos": [4041.91, -4417.06], "size": [257.22, 60.26], "flags": {}, "order": 15, "mode": 0, "inputs": [{"name": "samples", "type": "LATENT", "link": 1050}, {"name": "vae", "type": "VAE", "link": 1051}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [1052]}], "properties": {"Node name for S&R": "VAEDecode"}, "widgets_values": []},
{"id": 466, "type": "ImageResize+", "pos": [4435.67, -4427.20], "size": [270, 218], "flags": {}, "order": 17, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 1052}, {"name": "width", "type": "INT", "widget": {"name": "width"}, "link": 1053}, {"name": "height", "type": "INT", "widget": {"name": "height"}, "link": 1054}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [1018]}, {"name": "width", "type": "INT", "links": []}, {"name": "height", "type": "INT", "links": []}], "properties": {"Node name for S&R": "ImageResize+"}, "widgets_values": [512, 0, "lanczos", "keep proportion", "always", 0]},
{"id": 484, "type": "MaskBoundingBox+", "pos": [155.15, -5289.40], "size": [270, 182], "flags": {}, "order": 23, "mode": 0, "inputs": [{"name": "mask", "type": "MASK", "link": 1015}, {"name": "image_optional", "type": "IMAGE", "link": 1112}], "outputs": [{"name": "MASK", "type": "MASK", "links": []}, {"name": "IMAGE", "type": "IMAGE", "links": []}, {"name": "x", "type": "INT", "links": [1044]}, {"name": "y", "type": "INT", "links": [1045]}, {"name": "width", "type": "INT", "links": [1046]}, {"name": "height", "type": "INT", "links": [1047]}], "properties": {"Node name for S&R": "MaskBoundingBox+"}, "widgets_values": [50, 0]},
{"id": 485, "type": "BBoxMultipleFix", "pos": [566.29, -5292.28], "size": [270, 318], "flags": {}, "order": 24, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 1114}, {"name": "mask", "type": "MASK", "link": 1043}, {"name": "x", "type": "INT", "widget": {"name": "x"}, "link": 1044}, {"name": "y", "type": "INT", "widget": {"name": "y"}, "link": 1045}, {"name": "width", "type": "INT", "widget": {"name": "width"}, "link": 1046}, {"name": "height", "type": "INT", "widget": {"name": "height"}, "link": 1047}, {"name": "target", "type": "COMBO", "widget": {"name": "target"}, "link": 1145}], "outputs": [{"name": "image_cropped", "type": "IMAGE", "links": [1092, 1124]}, {"name": "mask_cropped", "type": "MASK", "links": [1093]}, {"name": "x", "type": "INT", "links": [1019]}, {"name": "y", "type": "INT", "links": [1020]}, {"name": "orig_width", "type": "INT", "links": [1053]}, {"name": "orig_height", "type": "INT", "links": [1054]}, {"name": "width", "type": "INT", "links": []}, {"name": "height", "type": "INT", "links": []}], "properties": {"Node name for S&R": "BBoxMultipleFix"}, "widgets_values": [0, 0, 64, 64, "64 (SDXL / Flux)", "1536"]},
{"id": 483, "type": "GrowMaskWithBlur", "pos": [1028.87, -5270.10], "size": [299.84, 246], "flags": {}, "order": 22, "mode": 0, "inputs": [{"name": "mask", "type": "MASK", "link": 1093}], "outputs": [{"name": "mask", "type": "MASK", "links": [1062, 1091]}, {"name": "mask_inverted", "type": "MASK", "links": []}], "properties": {"Node name for S&R": "GrowMaskWithBlur"}, "widgets_values": [20, 0, false, false, 20, 1, 1, false]},
{"id": 481, "type": "VAEEncode", "pos": [1710.36, -4876.97], "size": [140, 46], "flags": {}, "order": 20, "mode": 0, "inputs": [{"name": "pixels", "type": "IMAGE", "link": 1092}, {"name": "vae", "type": "VAE", "link": 1060}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [1061]}], "properties": {"Node name for S&R": "VAEEncode"}, "widgets_values": []},
{"id": 482, "type": "SetLatentNoiseMask", "pos": [1919.72, -4872.43], "size": [188.14, 46], "flags": {}, "order": 21, "mode": 0, "inputs": [{"name": "samples", "type": "LATENT", "link": 1061}, {"name": "mask", "type": "MASK", "link": 1062}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [1123]}], "properties": {"Node name for S&R": "SetLatentNoiseMask"}, "widgets_values": []},
{"id": 465, "type": "ImageCompositeMasked", "pos": [4865.71, -4389.42], "size": [270, 146], "flags": {}, "order": 16, "mode": 0, "inputs": [{"name": "destination", "type": "IMAGE", "link": 1113}, {"name": "source", "type": "IMAGE", "link": 1018}, {"name": "mask", "type": "MASK", "link": 1091}, {"name": "x", "type": "INT", "widget": {"name": "x"}, "link": 1019}, {"name": "y", "type": "INT", "widget": {"name": "y"}, "link": 1020}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [1120, 1122]}], "properties": {"Node name for S&R": "ImageCompositeMasked"}, "widgets_values": [0, 0, false]}
],
"groups": [
{"id": 1, "title": "Image 1", "bounding": [1954.04, -4477.54, 563.73, 325.55], "color": "#88A", "font_size": 24, "flags": {}},
{"id": 7, "title": "Inpaint", "bounding": [112.02, -5434.46, 2036.90, 828.76], "color": "#8AA", "font_size": 24, "flags": {}}
],
"links": [
{"id": 993, "origin_id": 438, "origin_slot": 0, "target_id": 437, "target_slot": 1, "type": "VAE"},
{"id": 994, "origin_id": 449, "origin_slot": 0, "target_id": 439, "target_slot": 0, "type": "CONDITIONING"},
{"id": 995, "origin_id": 437, "origin_slot": 0, "target_id": 439, "target_slot": 1, "type": "LATENT"},
{"id": 996, "origin_id": 441, "origin_slot": 0, "target_id": 440, "target_slot": 0, "type": "CONDITIONING"},
{"id": 997, "origin_id": 437, "origin_slot": 0, "target_id": 440, "target_slot": 1, "type": "LATENT"},
{"id": 998, "origin_id": 449, "origin_slot": 0, "target_id": 441, "target_slot": 0, "type": "CONDITIONING"},
{"id": 1002, "origin_id": 459, "origin_slot": 0, "target_id": 451, "target_slot": 0, "type": "INT"},
{"id": 1003, "origin_id": 459, "origin_slot": 1, "target_id": 451, "target_slot": 1, "type": "INT"},
{"id": 1010, "origin_id": 461, "origin_slot": 0, "target_id": 462, "target_slot": 0, "type": "NOISE"},
{"id": 1011, "origin_id": 444, "origin_slot": 0, "target_id": 462, "target_slot": 1, "type": "GUIDER"},
{"id": 1012, "origin_id": 460, "origin_slot": 0, "target_id": 462, "target_slot": 2, "type": "SAMPLER"},
{"id": 1013, "origin_id": 451, "origin_slot": 0, "target_id": 462, "target_slot": 3, "type": "SIGMAS"},
{"id": 1015, "origin_id": 447, "origin_slot": 0, "target_id": 484, "target_slot": 0, "type": "MASK"},
{"id": 1018, "origin_id": 466, "origin_slot": 0, "target_id": 465, "target_slot": 1, "type": "IMAGE"},
{"id": 1019, "origin_id": 485, "origin_slot": 2, "target_id": 465, "target_slot": 3, "type": "INT"},
{"id": 1020, "origin_id": 485, "origin_slot": 3, "target_id": 465, "target_slot": 4, "type": "INT"},
{"id": 1043, "origin_id": 447, "origin_slot": 0, "target_id": 485, "target_slot": 1, "type": "MASK"},
{"id": 1044, "origin_id": 484, "origin_slot": 2, "target_id": 485, "target_slot": 2, "type": "INT"},
{"id": 1045, "origin_id": 484, "origin_slot": 3, "target_id": 485, "target_slot": 3, "type": "INT"},
{"id": 1046, "origin_id": 484, "origin_slot": 4, "target_id": 485, "target_slot": 4, "type": "INT"},
{"id": 1047, "origin_id": 484, "origin_slot": 5, "target_id": 485, "target_slot": 5, "type": "INT"},
{"id": 1050, "origin_id": 462, "origin_slot": 1, "target_id": 463, "target_slot": 0, "type": "LATENT"},
{"id": 1051, "origin_id": 438, "origin_slot": 0, "target_id": 463, "target_slot": 1, "type": "VAE"},
{"id": 1052, "origin_id": 463, "origin_slot": 0, "target_id": 466, "target_slot": 0, "type": "IMAGE"},
{"id": 1053, "origin_id": 485, "origin_slot": 4, "target_id": 466, "target_slot": 1, "type": "INT"},
{"id": 1054, "origin_id": 485, "origin_slot": 5, "target_id": 466, "target_slot": 2, "type": "INT"},
{"id": 1060, "origin_id": 438, "origin_slot": 0, "target_id": 481, "target_slot": 1, "type": "VAE"},
{"id": 1061, "origin_id": 481, "origin_slot": 0, "target_id": 482, "target_slot": 0, "type": "LATENT"},
{"id": 1062, "origin_id": 483, "origin_slot": 0, "target_id": 482, "target_slot": 1, "type": "MASK"},
{"id": 1091, "origin_id": 483, "origin_slot": 0, "target_id": 465, "target_slot": 2, "type": "MASK"},
{"id": 1092, "origin_id": 485, "origin_slot": 0, "target_id": 481, "target_slot": 0, "type": "IMAGE"},
{"id": 1093, "origin_id": 485, "origin_slot": 1, "target_id": 483, "target_slot": 0, "type": "MASK"},
{"id": 1100, "origin_id": 439, "origin_slot": 0, "target_id": 467, "target_slot": 0, "type": "CONDITIONING"},
{"id": 1109, "origin_id": 475, "origin_slot": 0, "target_id": 487, "target_slot": 0, "type": "IMAGE"},
{"id": 1110, "origin_id": 487, "origin_slot": 0, "target_id": 447, "target_slot": 0, "type": "IMAGE"},
{"id": 1112, "origin_id": 486, "origin_slot": 0, "target_id": 484, "target_slot": 1, "type": "IMAGE"},
{"id": 1113, "origin_id": 486, "origin_slot": 0, "target_id": 465, "target_slot": 0, "type": "IMAGE"},
{"id": 1114, "origin_id": 486, "origin_slot": 0, "target_id": 485, "target_slot": 0, "type": "IMAGE"},
{"id": 1115, "origin_id": 486, "origin_slot": 0, "target_id": -20, "target_slot": 1, "type": "IMAGE"},
{"id": 1116, "origin_id": 486, "origin_slot": 0, "target_id": 459, "target_slot": 0, "type": "IMAGE"},
{"id": 1118, "origin_id": 432, "origin_slot": 0, "target_id": 444, "target_slot": 0, "type": "MODEL"},
{"id": 1119, "origin_id": 478, "origin_slot": 0, "target_id": 449, "target_slot": 0, "type": "CLIP"},
{"id": 1120, "origin_id": 465, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "IMAGE"},
{"id": 1122, "origin_id": 465, "origin_slot": 0, "target_id": -20, "target_slot": 0, "type": "IMAGE"},
{"id": 1123, "origin_id": 482, "origin_slot": 0, "target_id": 462, "target_slot": 4, "type": "LATENT"},
{"id": 1124, "origin_id": 485, "origin_slot": 0, "target_id": 437, "target_slot": 0, "type": "IMAGE"},
{"id": 1125, "origin_id": 440, "origin_slot": 0, "target_id": 444, "target_slot": 2, "type": "CONDITIONING"},
{"id": 1126, "origin_id": 467, "origin_slot": 0, "target_id": 444, "target_slot": 1, "type": "CONDITIONING"},
{"id": 1127, "origin_id": 488, "origin_slot": 0, "target_id": 486, "target_slot": 1, "type": "FLOAT"},
{"id": 1128, "origin_id": 488, "origin_slot": 0, "target_id": 487, "target_slot": 1, "type": "FLOAT"},
{"id": 1143, "origin_id": -10, "origin_slot": 2, "target_id": 488, "target_slot": 0, "type": "FLOAT"},
{"id": 1144, "origin_id": -10, "origin_slot": 3, "target_id": 449, "target_slot": 1, "type": "STRING"},
{"id": 1145, "origin_id": -10, "origin_slot": 4, "target_id": 485, "target_slot": 6, "type": "COMBO"},
{"id": 1152, "origin_id": -10, "origin_slot": 0, "target_id": 486, "target_slot": 0, "type": "IMAGE"},
{"id": 1153, "origin_id": -10, "origin_slot": 1, "target_id": 475, "target_slot": 0, "type": "MASK"}
],
"extra": {"workflowRendererVersion": "LG"}
}
]
},
"config": {},
"extra": {
"workflowRendererVersion": "LG",
"frontendVersion": "1.39.19",
"VHS_latentpreview": false,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}