Get a Colour Palette from a Photo | Tinta
Frequently asked questions
- Does Tinta pick the colour of the subject or the background?
- The subject. Tinta weights pixels by Vision attention-based saliency before it quantises, so a rust-coloured jacket in front of a beige wall gives you the rust rather than the beige.
- How many colours does Tinta pull from a photo?
- Six, as a fixed default. The extraction engine is written to take a maximum colour count, but the app asks for six every time, so a photo with more than six real colours in it will lose the tail.
- Do my photos get uploaded anywhere?
- No. Extraction runs entirely on your phone: downsampling, subject weighting, colour quantisation and the saliency model all run locally. There is no account, no ads, and no tracking SDK.
- Why does a photo taken in mixed lighting give me a muddy palette?
- Because every pixel is averaged on purpose. Tinta returns one representative colour per cluster, so a garment lit warm on one side and blue from a window on the other lands between the two instead of at either.
- Can I change a colour if Tinta picked the wrong one?
- You can choose which extracted colour becomes the card's main band colour, and turn on harmony or the ladder treatment to build a set from it. What Tinta does not do is add a colour that was not in the photo, or remove one you do not want.
- What resolution and colour space do the colours come out in?
- Every swatch carries an exact uppercase
The short answer
Tinta reads six colours out of any photo on your device, weights the pixels so the subject counts for more than the background, and hands you a palette ordered by how much of the frame each colour occupies. Every swatch carries its exact HEX, and the colours arrive as a card you can mount and export.
The part worth understanding is why the answer differs from what you would have guessed. In most photographs the largest area of a single colour is a wall, a sky, or a tabletop, so any tool that counts pixels hands you the background. Tinta's saliency weighting is what makes it return the colour you actually stopped to look at. If you would rather skip the reading and try it, Tinta is on the App Store.
Why you are here: you want a colour, not a picture
You see a jacket, a wall at golden hour, a particular green in a photograph, and you want to know what that colour is — the value you could actually use.
The two naive ways to get it share one flaw. An eyedropper is blind: it returns whatever you touched, which on a phone is often a patch of background. A generic palette generator is area-driven: it splits colour space by median cut and returns boxes ranked by how many pixels fell into them. That is correct for "what dominates this image" and wrong for "what did I notice in it", because those questions differ whenever a subject is smaller than its surroundings.
So the problem is not "I need a colour picker". It is: how do I get the colour I was actually drawn to, rather than the one occupying the most square centimetres?
What actually happens when you pick a photo
Tinta's extraction is a four-stage pipeline, and every stage trades accuracy for speed in a way you can feel.
1 — Downsample to 72 pixels on the long edge. This is the stage that surprises people. It does not read your full-resolution image; it reduces it to roughly 72 × 54 for a 4:3 photo, about four thousand pixels. At that size every pixel averages a large patch of the original, so fine texture — fabric weave, foliage, gravel — blends into its neighbours. That is why extraction does not need full resolution and stays instant. The cost: a highly textured subject returns slightly softer colours than the original file would.
2 — Skip transparent pixels, then weight what is left. Anything with alpha below 16 out of 255 is discarded, so a screenshot on a transparent background does not contribute its empty regions. Every surviving pixel then gets a weight of alpha × (0.3 + 1.7 × saliency).
That formula is the whole trick, and both halves are deliberate. The 1.7 gives subject pixels roughly six
times the pull of background pixels, which is what pulls a jacket's rust ahead of the wall. The 0.3 floor
matters just as much: without it, everything Vision considers uninteresting would be weighted near zero and
the background would vanish — a card of loud subject colours with nothing around them, which is not what
"the colours in this photo" means.
3 — Quantise with median cut. The quantiser repeatedly takes the colour box with the widest span along its longest axis and splits it at the midpoint of that axis. Two details make this better than the version most people have met:
- It splits on the midpoint of the axis value, not the median pixel count. On an image of 30 near-black pixels and 10 near-white ones, a median split shaves a grey band off the black cluster and hands you a real grey swatch; a midpoint split separates black from white cleanly. Skewed distributions are the normal case in a photograph, so this matters more than it sounds.
- It picks the box to split by longest axis span, not by volume (width × height × depth). Volume collapses to zero for any image varying along one channel, which is exactly what a low saturation photo does — the whole image then lands in one un-splittable box, giving you one colour for one picture.
4 — Average, rank, and label. Each box collapses to a weighted average of its pixels, boxes are sorted by their share of the image, and the top one is tagged dominant. A new card's main band is set to that dominant colour automatically.
The saliency model is Apple's Vision attention-based saliency, normalised to 0...1. It is asked, in effect, "what would a person look at first", and on portraits and product shots it is reliable. When it fails it returns nothing, and extraction falls back to unweighted clustering.
What is in the palette, exactly
Six colours, sorted by share of the frame, each with an uppercase #RRGGBB value, a role of dominant or
secondary, and the fraction of the image it accounts for. Nothing else:
- The count is fixed at six. The engine accepts a maximum colour count as a parameter and is unit-tested across other values, but the app asks for six every time. You cannot ask for four or twelve swatches.
- Every colour is one averaged value. No selection of representative pixels from inside a cluster. Under mixed light this is the biggest source of a muddy result.
- The weights are honest. A dominant colour at 41% really does occupy 41% of the frame's weighted pixels, which is why the first swatch is usually the one you recognise.
When it goes wrong
The failures are predictable, and knowing them is more useful than the happy path.
Mixed lighting produces mud. A coat lit warm on one side and blue from a window on the other does not yield two colours; it yields one colour between them. This is the price of averaging, and no downstream retouching fixes it. Prefer a shot with one dominant light source.
Two subjects in one frame split the attention. Saliency cannot know you were interested in the cup and not the table behind it. When both matter, extract separately.
A large flat subject in a plain room can still lose. The weighting is a strong prior, not a guarantee. If the wall is the colour you wanted, it is very likely still in the six — just not first.
Very dark or very low-saturation photos are weak inputs. With little range along any channel, median cut has less to separate, and the palette comes out boring rather than wrong.
HEX is sRGB, not P3. Swatch values are 8-bit sRGB; P3 is applied at export. A highly saturated photograph can therefore show saturation clipping on a wide-gamut export — a real limit if your work is colour-critical.
How it compares to the obvious alternatives
Against an eyedropper: it wins for one precise point and loses for everything else. It cannot tell you what else is in the frame, it has no ordering, and it fails silently when your finger lands wrong.
Against a browser palette generator: those are good at statistics over the whole image, which is the wrong statistic here, and they need you to upload the photo to a server. Tinta's edge is the saliency weighting plus the fact that your photos never leave the device.
Against a brand guideline database: if you need a certified Pantone match, none of these give you one. This is not a colour-management tool and does not claim to be.
What Tinta does differently
The differentiator: extraction is built around the subject rather than area, and the result is a card rather than a swatch list.
- Subject-weighted, not area-ranked. Vision attention saliency, with a floor so the background still contributes — the reason the palette looks like what you saw.
- Six exact values, not a screenshot. Every swatch is a real
#RRGGBByou can paste into a stylesheet. - Eighteen mount styles, ranked for your photo. The reel shows transparent thumbnails of your actual photo, and the order is decided by the photo's own properties — landscape versus portrait, a rich five-plus-colour palette versus a flat one, luminance spread, faces, centred subject. Recommendations reorder only; all eighteen stay visible. Four are permanently free, four limited-free with a watermark corner on a free export, ten are Pro.
- A hierarchy that stays legible. Overlaid text switches between black and white by relative luminance, so a caption never disappears into its own swatch.
- Tiered export. Free gives you a 2048-pixel JPEG. Pro unlocks 3840-pixel JPEG and 6144-pixel lossless PNG, with P3 colour management and no watermark. Monthly or yearly, priced in the app.
- Fully on-device, no account. Downsampling, saliency, quantisation and rendering all run on your phone. For a tool whose entire input is your camera roll, that is the feature, not a footnote.
What to do next
If the colour you want is in your photo and you want the palette around it, Tinta will get it in one pick and hand you values you can use immediately. If you need a certified brand match, or twelve colours instead of six, no palette extractor is the right tool.
Otherwise: pick a photo with one clear subject, check whether the first swatch is the colour you were after, and if not, look at swatches two and three before assuming the extraction failed. More often than not the colour you wanted was ranked second to something you also liked.
Get Tinta on the App Store, or read how a palette becomes a coordinated colour scheme once you have one.