visualtoprompt.com

What an Image to Prompt Tool Actually Measures

Twelve signals, all arithmetic over pixels — and a short list of things it refuses to guess.

One photograph inside crop marks and rulers, with sample points linked to a dial on the right.
One photograph inside crop marks and rulers, with sample points linked to a dial on the right.

An image to prompt tool measures twelve things about your picture, and every one of them is arithmetic over pixel values — the aspect ratio, average brightness, how widely brightness spreads, average saturation, edge density, the share of near-greyscale pixels, red-minus-blue balance, centre-versus-border light, top-versus-bottom light, and a five-colour palette. Those numbers then pass through fixed thresholds and come out as phrases. That is the entire process: measure, compare against a number, emit a word.

What it does not do is recognise your subject. No faces, no people, no objects, no brands, no scenes. There is no detector behind those, and none is claimed — a prompt that confidently names a subject that is not in your picture is worse than one that stays quiet about it. And because the measurement is just arithmetic over a pixel buffer, it runs on your own device; your image is never uploaded for any of this.

The twelve signals, and how each one is computed

Every row below is a plain calculation. None of them needs a model, and none of them needs the network.

SignalHow it is computedFieldStatus
Framing and aspect ratioNatural width divided by natural height, reduced to a ratioar, arParammeasured
ExposureMean Rec. 709 luma over a 192×192 samplemeanLmeasured
ContrastStandard deviation of lumastdLmeasured
SaturationMean HSV saturationmeanSatmeasured
Detail densityMean gradient magnitude over the interioredgemeasured
Monochrome shareShare of pixels with saturation below 0.10monoRatiomeasured
Colour temperatureMean red minus mean bluemeanR / meanBmeasured
Lighting distributionCentre-region luma versus border-region lumacentreL / borderLmeasured
Vertical lightingTop-band luma versus bottom-band lumatopL / bottomLmeasured
Dominant colour palette12-bit colour buckets merged at distance 52, then named against a 35-name palette (max 5)palette[]measured
Green or blue dominanceShare of pixels passing a channel-ratio testgreenRatio / blueRatioinferred
MoodThresholds over the measured luma and temperature figures abovemoodderived
People, faces, objects, brands, scenesNo client-side detector is reliable enough to assert these—never claimed

The last two rows are the important ones. Green and blue dominance is tagged inferred, not measured, and mood is derived from other numbers. Subject recognition is not attempted at all.

Real numbers from three real images

These are the actual outputs from running the analyser over three 8-bit RGB images — a night fireworks shot, a strongly backlit meadow, and a code screenshot. Every value below is measured on the 192 × 192 grid, which is what the live tool actually hands the analyser. Nothing here is rounded for presentation beyond two decimals.

Fieldnight-fireworks
640×360
strong-backlight
640×360
text-screenshot
800×450
ar1.781.781.78
arParam16:916:916:9
meanL34.5173.9535.95
stdL46.9380.3613.68
meanSat0.76180.49900.2517
edge22.5013.025.14
monoRatio0.01170.20160.0222
meanR − meanB−43.9312.38−9.90
centreL60.2554.1437.54
borderL29.5877.7535.64
topL43.23135.7735.98
bottomL25.5019.3934.30
greenRatio0.00130.06700.0530
blueRatio0.86400.10110.9250
Top five palette entries — night-fireworks: navy 0.744, grey 0.087, slate 0.083, silver 0.035, black 0.016. strong-backlight: black 0.576, charcoal 0.127, silver 0.118, white 0.083, olive 0.053. text-screenshot: charcoal 0.919, forest green 0.070, slate 0.011, grey 0.000.
Night fireworks over a dark ridge, the first sample image measured above
night-fireworks (640×360) — meanL 34.51, edge 22.50, blueRatio 0.8640. The palette comes back navy at 74%, with no trace of the gold and white in the bursts.
Backlit meadow flowers against a low sun, the second sample image
strong-backlight (640×360) — meanL 73.95, stdL 80.36, edge 13.02. Centre 54.14 against border 77.75: the backlighting is picked up, the flowers are not.
A code screenshot in a dark editor theme, the third sample image
text-screenshot (800×450) — meanL 35.95, edge 5.14, monoRatio 0.0222. Ninety-two per cent of the frame lands in one colour bucket; nothing in the output describes the code.

How a number becomes a word

Each measurement is compared against a fixed cut-off and swapped for a phrase. Contrast uses stdL: above 68 is high contrast, above 38 is medium contrast, anything else is soft, low contrast. Exposure uses meanL, with 175 as the bright cut-off and 130 as the balanced one. Detail uses edge: above 15 is highly detailed with intricate texture, above 7 is moderate detail and texture, below that clean and minimal, smooth surfaces. Those three ladders are part of 33 comparisons in the source; the full cut table lists every one of them, with all 40 files measured against each cut and the distance from the nearest file to flipping.

Running those thresholds over the three images above shows where each one lands:

That is the honest picture of how an image to prompt tool behaves: the vocabulary is small, and every word in it is decided by a fixed number. On these three the margins are comfortable — the closest any value sits to a cut-off is 1.86 — so nothing flipped. The figures are not fixed properties of your picture, though: measure the same backlit meadow at full resolution instead of on the 192 grid and edge reads 9.60 rather than 13.02. It is arithmetic, and it is worth arguing with.

A cut-off works in both directions, which is the part worth keeping: because every phrase is decided by a number, you can also ask how far that number would have to move before the phrase changes, and get a band rather than a feeling. That is what makes a generated line checkable against a picture you did not generate it from, and it is measured for all eight axes in what one example line pins down, and how much survives a move to another picture.

Those cut-offs also mean the line cannot be read back as a picture. A word stands for a range rather than a value, and both the grid and the colour clustering throw away position and fine detail before any number is taken at all. How much of the picture is still there at the other end of that chain is measured one step at a time in how much of your picture survives an image to prompt line, including how far a file can be changed before any of its twelve output lines moves.

The palette is merged before it is named

A naive dominant-colour pass over a gradient reports five near-identical shades, which reads as noise in a prompt. So colours are first counted into 12-bit buckets — four bits per channel — then merged: any bucket whose average colour sits within a distance of 52 of a cluster already collected is folded into that cluster, and the cluster average is re-weighted by pixel count. The top five surviving clusters are named against a 35-entry colour table by nearest RGB distance, capped at five names.

On text-screenshot that produced charcoal at 0.919, forest green at 0.070, slate at 0.011 and grey at 0.000 — 92% of the frame in a single bucket, because a dark editor theme really is almost one flat colour. On night-fireworks the spread is wider: navy 0.744, grey 0.087, slate 0.083, silver 0.035, black 0.016. Neither list contains anything you would recognise as the subject — not the fireworks, not the flowers, not the code — because colour buckets do not know what a subject is.

The failure you will hit first

None of these three comes near the monochrome label. Monochrome share is the proportion of pixels with saturation below 0.10, and the cut-off for the monochrome label is 0.85; the three measured 0.0117, 0.2016 and 0.0222. So on ordinary photographs the failure you hit first is not a wrong subject — it is no subject at all. The subject field is only filled in when a threshold is actually crossed, and on all three it stayed empty: null, in every one of the four output formats.

So the edit you will actually make is the same one, for a different reason: write your subject in yourself. The colour, light, framing and detail figures around it are measured from your pixels and worth keeping — it is only the noun at the front that is missing. The monochrome label is still a real behaviour on anything close to greyscale, and what the resize does to a colour that small is set out in where your image goes.

For how long those subject-free lines actually run, and what a caption-sized cap takes out of them, see whether an image to prompt line can work as alternative text.

Why nothing is claimed about your subject

Client-side object and face detection is not reliable enough to state as fact, so it is not used. The one place where a hue is allowed to speak is deliberately conservative: green dominance is tagged as a hint rather than asserted, and only when greenRatio exceeds 0.45 — blue likewise. Two of the three cleared that line comfortably: blueRatio measured 0.8640 on the fireworks and 0.9250 on the code screenshot, so both were tagged blue-dominant (inferred) — a hint, not a subject. On the third, greenRatio was 0.0670 and blueRatio 0.1011, neither near 0.45, and the hint reads no dominant hue (measured). Guessing "foliage" from a green histogram is exactly the kind of confident wrong answer this approach is built to avoid.

Monochrome is the one thing it will assert rather than infer, and it is labelled monochrome (measured) only when the share of pixels below 0.10 saturation crosses 0.85 — a fact about the file, not a guess. On these three it did not come close.

Checking it yourself

Every value behind a phrase is shown under the generated prompt, so you can see which number produced which wording and argue with that number rather than with the sentence. If a phrase looks wrong for your image, find the corresponding measured value — it will be right there — and compare it against the cut-offs listed above. The measurement layer has no dependencies, makes no network call and loads no model; it is arithmetic over a pixel buffer, which is why it is reproducible and worth arguing with.

For the reverse direction — words in, image out — see what actually decides the result in prompt to image.