docs: add Flux2Klein inpaint example workflow + update README
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user