Nodes/ComfyUI-EditUtils/EditUtils: Breast Size Control (Canvas) lrzjason
ComfyUI Node

EditUtils: Breast Size Control (Canvas) lrzjason

BreastSizeControl_EditUtils

By lrzjason·Created 9 months ago·Updated 3 days ago· 256
EditUtils: Breast Size Control (Canvas) lrzjason
  • image
  • image
◄width832►
◄height1216►
◄markers{"version":1,"color":"#FADBAE","circles":[{"cx":0.355,"cy":0.46,"rx":0.086545,"ry":0.059215,"angle":0},{"cx":0.645,"cy":0.46,"rx":0.086545,"ry":0.059215,"angle":0}]}►
◄antialiasfalse►

Control maps are a strange thing to hold in your head if you came in during the prompt-only era: you draw a greyscale depth map or a stick-figure pose, the model obeys the geometry, and the prompt supplies the rest. Same lineage here - except the control map it draws is one nobody else has training data for.

BreastSizeControl_EditUtils renders a _bd condition image: a black frame with one or two filled ellipses at #FADBAE, where the marker's area is the size dial, its position is where things sit, and its rotation is tilt.

It does nothing on its own - those pixels mean nothing to a stock checkpoint. It's the reference input for a Krea2 edit pipeline with a purpose-trained control LoRA on top, which is why the pack ships the working graph (k2 breasts size control.json) and not just the node.

Why it exists at all

Describe the scene in the prompt and let the geometry come from the reference image. The example prompt contains no size words at all, on purpose - the moment your text starts describing size it competes with the condition image and the model picks a fight with itself.

The Krea2 choice fits that logic. Krea 2 is a 12B DiT with strong anatomical knowledge and a large LoRA ecosystem, and as of mid-2026 Krea still hadn't shipped an official edit model - the community built edit LoRAs in that gap. This node is downstream of that: a trained control LoRA on Krea2 raw+turbo, plus a canvas to author the conditioning it expects.

How it works

All the geometry lives in the hidden markers widget - JSON with a fill colour and up to two ellipses, each with cx, cy, rx, ry and angle. Centre and radii are normalised (fractions of width and height), so changing the resolution rescales the drawing instead of mangling it. Angle is degrees, positive = clockwise, and rotation never changes area - which is the point, since area is the size class.

The node rasterises an ellipse inscribed in each marker's bounding box. With antialias off you get two colours and hard edges, matching the reference _bd images the LoRA was trained on; on, and it supersamples the edges 4x4 without altering the area.

The inputs that matter

width / height (832×1216 by default) set the canvas, but only when no image is connected. Connect image and the output is forced to that image's exact pixel size - which is the contract: a condition image has to match its target pixel for pixel, or the geometry lands wrong once the pair gets bucketed. markers is canvas-owned; drag, don't type. One output: image, an (1, H, W, 3) RGB tensor.

The canvas and the presets

Drag empty space to make a marker (max two), drag the body to move it, drag an N/S/E/W edge handle to turn a circle into an ellipse, drag a corner or scroll to scale, grab the rotation handle for angle. Right click deletes. A guide checkbox dims the connected image underneath without touching the output.

The part worth using: six presets that set the total marker area to measured medians from the author's reference set.

| flat | small | medium | large | huge | gigantic | |---|---|---|---|---|---| | 1.49% | 2.94% | 3.22% | 7.18% | 13.95% | 16.50% |

A preset rescales the whole drawing and keeps the two markers' relative sizes - giving each marker the full class area would double the total whenever you drew two. For an asymmetric pair, use the edge handles.

Wiring it into a graph

BreastSizeControl ──► QwenConfigPreparer (to_ref, ref_main_image,
                        ref_longest_edge 1024, ref_crop pad)
                   ──► EditTextEncode_EditUtils ◄── Krea2ModelConfig_EditUtils
                   ──► Krea2EditApply_EditUtils ──► KSampler

with krea2_turbo and the control LoRA merged on before sampling: euler / simple, 8 steps, CFG 1.0, denoise 1.0.

Model files, since people routinely miss two of the three: krea2_raw_int8_convrot.safetensors (UNET), qwen3vl_4b_fp8_scaled.safetensors (CLIP, type krea2), qwen_image_vae.safetensors (VAE), plus breasts_control_lrzjason_20261015.safetensors from CivitAI.

Install

Manager → search ComfyUI-EditUtils → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/lrzjason/ComfyUI-EditUtils

No pip dependencies. You'll want the author's companion pack, Comfyui-LoraUtils: the example merges both LoRAs with its LoadLoraOnly → MergeLoraToModel pair, and the JSON comes up with missing nodes without it.

Where people get burned

Drawing outside the training distribution. The LoRA saw black backgrounds, that fill colour, and one or two ellipses. Change the palette, add a third marker, or put junk on the canvas and you're asking it to extrapolate.

Forgetting the LoRA. The condition image alone does nothing. If the output ignores your markers entirely, check the LoRA actually merged before touching anything else.

Expecting stability. The author states plainly that the control LoRA and the Krea2 edit path are still in development. And this author's CivitAI releases have a habit of sitting in early access - the community has called that out more than once - so budget for the LoRA download being gated.

Categoryimage

Inputs (5)

NameTypeDefaultDescription
widthINT83216–16384Canvas width, used when no image is connected. The drawing is stored normalised, so changing this only rescales the output.
heightINT121616–16384Canvas height, used when no image is connected.
markersSTRING{"version":1,"color":"#FADBAE","circles":[{"cx":0.355,"cy":0.46,"rx":0.086545,"ry":0.059215,"angle":0},{"cx":0.645,"cy":0.46,"rx":0.086545,"ry":0.059215,"angle":0}]}Owned by the node's canvas (JSON: color + one or two circles with cx/cy/rx/ry/angle). Edit the markers by dragging on the canvas, not by hand.
antialiasBOOLEANfalseFalse reproduces the existing _bd images exactly (two colours, hard edges); True supersamples the marker edges 4x4.
imageoptIMAGETarget image: the condition image is forced to its exact pixel size (batch: first frame decides). Required for the _bd contract that a condition image equals its target's size.

Outputs (1)

NameTypeDescription
imageIMAGE—