📐 Krea2 BBOX Canvas
Krea2 BBOX Canvas is the whiteboard for your composition
- framing_data
Krea 2 is a great model and a terrible multitasker. It reads natural language beautifully, but if you ask it for "a woman on the left and a bottle on the right" in one prompt, you get a coin flip on which side they land - that's the old attribute-bleeding problem, and it's why the Krea2 BBOX Prompter Suite exists. This node, Krea2 BBOX Canvas, is the first step in that pipeline: the drawing board where you set the image size and physically drag colored rectangles to tell Krea2 where things go.
Call it what it is: a whiteboard, not a magic wand. The README is upfront that BBOX regions are layout guidance, not strict masks - Krea2 doesn't hard-respect them the way Ideogram 4 does its native boxes. Community testing of this suite says exactly that: it won't be as accurate as Ideogram's own bbox generation, but the layout, style, and background control still open up a lot of compositions you can't reliably get from a flat prompt. If you want pixel-level regional control, that's a different, much heavier tool (regional-conditioning territory); this is the pragmatic middle ground.
What it actually does
The node shows you a canvas in ComfyUI. You pick a generation size, then draw one or more rectangles and assign each one a color from the five slots - RED, BLUE, YELLOW, GREEN, MAGENTA. That color is the key: each slot on the canvas maps to a matching prompt field on the companion Krea2 BBOX Prompter node, which is how your "red box" and your "red prompt" get married later in the pipeline.
Under the hood it's embarrassingly simple, and that's a feature. There's no image analysis, no OCR, no automatic subject detection - the code just packages the canvas JSON (a list of boxes with their [x1, y1, x2, y2] coordinates) together with your width, height, and camera settings, and hands it off as one blob. The node you'll wire it to is Krea2 BBOX Export, which consumes its framing_data output.
The inputs that matter
You'll touch three widgets day to day:
- preset - a dropdown of 12 common sizes from
1024 x 1024up to2048 x 2048, plusCustom(where width/height take over). Pick the aspect you actually want; Krea2 likes specific resolutions, and the export step uses these numbers for both the aspect ratio and your EmptyLatentImage. - width / height - only really used when preset is
Custom, though they're always present.1to16384, default 1024. - grid_mode -
Off,Thirds, orCenter Cross. Pure drawing aid; it's a visual grid so you can line up boxes on the rule of thirds. Does nothing to the output.
The rest - layout_data, camera_data, camera_set_data, canvas_preset_data - are hidden serialized-JSON fields that the front-end writes for you. Don't hand-edit them unless you're debugging. There's also a ui_language toggle (Auto / English / Japanese), which matches the author's bilingual README - this is a Japanese-built suite, and the canvas UI respects that.
How to install it
This is a zero-dependency node - no model download, no extra packages, nothing in requirements.txt. From the command line:
cd ComfyUI/custom_nodes
git clone https://github.com/ukr8b3g-cmyk/Krea2-BBOX-Prompter.git Krea2-BBOX-Prompter-Suite
Restart ComfyUI, then hard-refresh the browser with Ctrl + F5 - the canvas is front-end JavaScript, so a stale browser cache is the #1 way people report the node "missing" after install. ComfyUI Manager users can search for the pack title, "Krea2 BBOX Prompter Suite." One gotcha from the README: the suite clones as Krea2-BBOX-Prompter-Suite, but if you install from a ZIP, make sure the .py files sit directly inside the custom_nodes folder - a double-nested Krea2-BBOX-Prompter-Suite/Krea2-BBOX-Prompter-Suite/ folder silently won't load.
Where people get burned
The biggest trap is treating the boxes like masks. If your subject keeps ignoring its box, don't just drag it bigger - the README's advice is to adjust the box and the prompt wording and the amount of scene context together, because Krea2 interprets all three jointly. Also: one or two boxes is a good start; five heavily overlapping boxes is how you get mush. And the whole suite needs the full pipeline - Canvas alone produces nothing you can render. Your next two nodes are Krea2 BBOX Prompter (the text half) and Krea2 BBOX Export (the node that turns boxes + text into the JSON Krea2 actually reads).
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 10241–16384 | — |
| height | INT | 10241–16384 | — |
| preset | COMBO | 1024 x 1024 | 12 options: 1024 x 1024, 1536 x 1536, 2048 x 2048, 1024 x 1344, 1024 x 1536, 1152 x 1536, +6 |
| layout_data | STRING | {"boxes":[]} | — |
| camera_data | STRING | {"iso":"","shutter":"","aperture":"","focal_length":""} | — |
| grid_mode | COMBO | Thirds | 3 options: Off, Thirds, Center Cross |
| ui_language | COMBO | Auto | 3 options: Auto, English, Japanese |
| camera_set_data | STRING | {"sets":[],"selected":""} | — |
| canvas_preset_data | STRING | {"sets":[],"selected":""} | — |
| width_overrideopt | INT | 1–16384 | Overrides the Canvas width when connected. |
| height_overrideopt | INT | 1–16384 | Overrides the Canvas height when connected. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| framing_data | KREA2_ELEMENT_FRAMING_DATA | — |