π¨ Colorful Starting Image
Procedural shape art for weird starting latents
- image
- mask
Most "starting image" tricks in Stable Diffusion boil down to feeding the sampler colored noise instead of pure Gaussian noise, hoping the extra structure nudges the composition somewhere interesting. Colorful Starting Image does that on purpose and with actual control: it draws a random arrangement of shapes - rectangles, circles, splines, stripes, arcs, whatever you list - onto a canvas, and hands you that as an image (and a mask) you can push through img2img at a low-ish denoise, or just save straight out as abstract wallpaper. The pack's own description is blunt about the second use case: it's genuinely good for that.
How it works
It's a pure image generator - no model, no GPU work, just procedural drawing. You tell it how many shapes to place (components), how big they're allowed to get (component_scale, as a fraction of the image width), and which shapes are in the pool (shape_string, a comma list like "rectangle, ellipse, circle, line, spline, dot, stripes, triangle, polygon, arc, concentric_circles"). Everything else is styling on top of that: a color palette family, an optional harmony rule to keep the colors from clashing, a fill mode (solid, gradient, or striped blocks), where shapes cluster on the canvas, whether they're rotated, and an optional warp/noise/blur pass at the end for texture. seed locks the whole thing down - same seed, same settings, same image, every time.
The inputs and outputs that matter
For a first pass, you really only need a handful of the many knobs here:
width/height- canvas size, same as any latent.components- how many shapes get drawn. Higher = busier, more detailed image.shape_string- which shapes are eligible. Trim the list if you want a specific look (just circles, say).color_palette-random,random_color,muted,grayscale,binary,neon,pastel, orcolorized. This is the single biggest lever on the final mood.background_color- a color name, a hex code, or one of the special values (random,noise,noise_large,noise_color,noise_color_large).seed- for reproducibility.
Everything past that - color_harmony, fill_mode, shape_opacity, positioning_bias, arrangement, size_distribution, allow_rotation, the noise_* and warp_* fields, blur_radius - is there for when you want to go deep on the look, and each field's tooltip in the node itself spells out exactly what it does. Outputs are image and mask, ready to wire into a VAE Encode or straight into a Save Image node.
How to install it
Through ComfyUI Manager: search for ComfyUI-mnemic-nodes, install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes
Restart ComfyUI afterward. No model downloads, no external API - this node is self-contained image drawing, so there's nothing extra to configure for it specifically (a couple of other nodes in this pack need a Groq API key, but this one doesn't touch any of that).
Common issues & troubleshooting
It looks nothing like a "starting latent" should. That's expected if you feed the raw output at full denoise - it'll just get erased and replaced with whatever the checkpoint wants to draw. The trick with any shape-based starting image is a partial denoise (img2img strength somewhere in the 0.5β0.8 range depending on how much of the shape structure you want to survive) so the sampler builds on top of the composition instead of ignoring it.
Results feel too chaotic or too flat. That's noise_level, warp_intensity, and components fighting each other - turn noise_level and warp_intensity down toward 0 for a cleaner, more graphic look, or push components down if it feels overcrowded. There's no wrong answer here since the whole node is meant to be played with; the defaults are just a reasonable middle ground, not a "correct" setting.
Getting a plain black or white square. Check background_color and shape_opacity - a low opacity on a small number of components against a solid background can end up mostly empty. Bumping components or shape_opacity back up fixes it.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 1024 | The width of the generated image in pixels. |
| height | INT | 1024 | The height of the generated image in pixels. |
| components | INT | 20 | The total number of components (shapes) to draw on the image. More components create a more complex image. |
| component_scale | FLOAT | 0.50 | Controls the maximum potential size of shapes. A shape's max width is `image_width * component_scale`. Example: With a 1024px wide image and 0.5 scale, the largest shapes will be around 512px wide. |
| shape_string | STRING | rectangle, ellipse, circle, line, spline, dot, stripes, triangle, polygon, arc, concentric_circles | A comma-separated list of shapes to draw from. Available shapes: - rectangle, ellipse, circle, line, spline, dot, stripes, triangle, polygon, arc, concentric_circles |
| color_palette | COMBO | The color palette for the shapes. Options: - random: Picks one of the other palette options at random. - random_color: Any RGB color. - muted: Less saturated, softer colors. - grayscale: Shades of gray. - binary: Pure black and white. - neon: Bright, highly saturated colors. - pastel: Soft, low-saturation colors. - colorized: Grayscale tinted with a single random hue across all shapes. | |
| color_harmony | COMBO | Apply a color harmony rule to the generated colors. Options: - none: No harmony. - complementary: Two colors from opposite sides. - analogous: Three colors next to each other. - triadic: Three colors evenly spaced. - tetradic: Four colors in square harmony. Note: Color harmony has no effect when the 'binary' color palette is selected. | |
| fill_mode | COMBO | Fill shapes with multiple colors. Options: - none: Shapes are filled with a single color. - gradient: Blends two colors in a vertical gradient across each shape. - blocks: Divides each shape into vertical strips of solid, related colors. | |
| shape_opacity | FLOAT | 1.000.1β1 | The alpha value (0.0 to 1.0) for the drawn shapes. 1.0 is fully opaque. |
| background_color | STRING | black | The background color of the image. Supported options: β’ Color names: black, white, red, blue, etc. β’ Hex codes: #FF0000, #00FF00, etc. β’ Special values: - random (random color) - noise (monochrome Gaussian noise) - noise_large (large monochrome noise) - noise_color (colored Gaussian noise) - noise_color_large (large colored noise) For full color name list, see: https://www.w3.org/TR/css-color-3/#svg-color |
| positioning_bias | COMBO | Controls where shapes are likely to appear. Options: - scattered: Anywhere on the canvas. - center_weighted: Clustered in the center. - edge_weighted: Clustered along the edges. - grid_aligned: Aligned to a grid. - random_weighted: Clustered around two random points. - north/south/east/west: Clustered on that edge. - nw/ne/sw/se: Clustered in that corner. | |
| arrangement | COMBO | Arrange shapes in a structured, less random pattern. Options: - none: Random placement. - spiral: Shapes are arranged in a spiral. - burst: Shapes burst outwards from the center. - grid: Shapes are aligned to a grid. | |
| size_distribution | COMBO | Controls the distribution of shape sizes. Options: - uniform: All sizes are equally likely. - prefer_small: Favors smaller shapes. - prefer_large: Favors larger shapes. | |
| allow_rotation | BOOLEAN | true | Allow random rotation of shapes like rectangles and lines. |
| noise_level | FLOAT | 0.000β5 | Controls the amount of Gaussian noise added to shape fills. It acts as a multiplier for the noise intensity, where 0 is no noise and 1 is maximum intensity. |
| noise_scale | FLOAT | 11β100 | Scale of the noise pattern. A scale of 1 creates fine, per-pixel noise. Higher values create larger, more coherent noise patterns. |
| noise_color | COMBO | Whether the noise should be colored or monochrome. | |
| warp_type | COMBO | Type of distortion to apply to the final image. Options: - none: No distortion. - wave: Sine wave distortion. - noise_field: Random, noisy distortion. - swirl: Swirls the image around the center. | |
| warp_intensity | FLOAT | 0.5 | Multiplier for the warp effect. For wave/turbulence, it scales pixel displacement. For swirl, it scales the rotation angle. |
| blur_radius | FLOAT | 0.0 | The radius in pixels for the final Gaussian blur filter. |
| seed | INT | 00β18446744073709550000 | The seed for the random number generator. Using the same seed and parameters will produce the same image. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| mask | MASK | β |