Conti i colori unici di un’immagine e scopra i primi cinque
Il contatore dei colori unici trasforma campioni di pixel RGB in un inventario chiaro dei colori realmente presenti.
Esegui gratis nel browser
Indica il numero esatto di terne RGB distinte, il totale dei pixel rappresentati e i cinque colori più frequenti. I record ripetuti vengono uniti automaticamente, mentre un conteggio facoltativo consente a un campione di rappresentare molti pixel identici. Il calcolo è deterministico e usa valori di canale esatti senza raggruppare tonalità vicine. È quindi adatto a grafica esportata, immagini indicizzate, schermate e test nei quali è importante verificare un’uguaglianza precisa.
Prepari i campioni di pixel per un conteggio esatto
Fornisca i pixel come record RGB con canali rosso, verde e blu compresi tra 0 e 255. Ogni record rappresenta un pixel, salvo quando aggiunge un conteggio positivo, utile se un decodificatore o un istogramma ha già unito valori ripetuti. Lo strumento considera unico un colore soltanto quando cambia l’intera terna RGB. Per esempio, RGB 20, 40, 60 e RGB 20, 40, 61 sono due colori distinti, anche se possono sembrare quasi identici. Il canale alfa è volutamente escluso dal contratto: i campioni devono quindi riflettere già la politica di trasparenza o composizione adottata nel Suo flusso. Può inviare più volte lo stesso valore RGB; tutte le occorrenze e i conteggi vengono sommati prima dell’ordinamento. In questo modo sia i flussi di pixel grezzi sia gli istogrammi compatti mantengono lo stesso significato. Un elenco vuoto non descrive un campione e produce un errore invece di uno zero fuorviante. Vengono rifiutati anche canali o conteggi non validi, campi non supportati ed elenchi troppo grandi, affinché gli errori di formato restino evidenti.
Interpreti i colori distinti e la classifica dei primi cinque
Il totale dei colori distinti è la dimensione della mappa delle frequenze RGB esatte dopo l’unione dei record duplicati. Il totale dei pixel è la somma del conteggio di ogni record e usa uno quando il conteggio è omesso. L’elenco principale contiene al massimo cinque elementi e può averne meno se sono presenti meno di cinque colori unici. Gli elementi sono ordinati dal conteggio maggiore al minore. In caso di parità, precedono i valori inferiori di rosso, poi di verde e infine di blu, rendendo il risultato stabile tra chiamate e computer. Ogni elemento include notazione esadecimale maiuscola, canali RGB originali, conteggio assoluto e frequenza rispetto ai pixel totali rappresentati. La frequenza viene arrotondata a sei decimali per ottenere JSON compatto e ripetibile. Non è un estrattore di palette percettive: le tonalità vicine restano separate invece di essere fuse in un centro. Questa differenza è importante per controllare risorse indicizzate, rilevare colori inattesi dovuti all’antialiasing o confermare l’output esatto di una trasformazione. Scelga uno strumento di raggruppamento della palette quando la somiglianza visiva conta più dell’identità esatta.
Utilizzi il risultato per verifiche, ottimizzazione e test
Il conteggio dei colori è una diagnosi compatta per i flussi grafici. Prima di pubblicare un’icona, confronti il totale distinto con la dimensione prevista della palette; un aumento inatteso può rivelare antialiasing, una modalità di esportazione errata o uno sfondo appiattito con valori leggermente diversi. Per la compressione, le cinque frequenze principali mostrano se poche tonalità dominano l’immagine e possono orientare una successiva codifica indicizzata o riduzione della palette. Nei test automatici, conservi il totale distinto e i colori principali come asserzioni dopo rendering, ridimensionamento o conversione, ricordando che un’operazione con interpolazione può creare legittimamente nuovi valori RGB. Il campo di conteggio è comodo anche per i decodificatori server che producono già istogrammi, perché possono inviare un record per colore osservato. Questa capacità non recupera né decodifica file: i campioni vengono forniti dalla Sua applicazione. L’elaborazione è locale e deterministica, senza rete, casualità o stato conservato. Può eseguire controlli interattivi nel browser oppure integrare lo stesso calcolo via API per $0.002.
Casi d'uso
Verifichi una grafica indicizzata
Confermi che un’icona o uno sprite esportato non contenga più colori RGB esatti della palette prevista.
Rilevi tonalità di rendering inattese
Individui colori aggiunti da antialiasing, interpolazione, composizione o modifiche all’esportazione.
Riassuma l’istogramma di un decodificatore
Trasformi record RGB ponderati in un conteggio esatto e in una classifica stabile delle prime cinque frequenze.
Domande frequenti
Che cosa viene considerato un colore distinto?
Una combinazione unica dei canali interi rosso, verde e blu. La differenza di un solo canale crea un altro colore.
Lo strumento raggruppa colori simili?
No. Confronta valori RGB esatti e non unisce tonalità vicine. Usi una palette dominante per il raggruppamento percettivo.
A che cosa serve il campo del conteggio?
Consente a un record RGB di rappresentare più pixel identici. Se omesso, il record rappresenta un pixel.
Che cosa accade con meno di cinque colori?
L’elenco top_colors restituisce tutti i colori osservati e contiene quindi meno di cinque elementi.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lo stesso calcolo deterministico può essere eseguito anche nel browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/image/color-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pixels":[{"r":255,"g":0,"b":0,"count":4},{"r":0,"g":0,"b":255,"count":2},{"r":255,"g":0,"b":0}]}'const res = await fetch("https://api.kit.forhosting.com/image/color-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pixels": [
{
"r": 255,
"g": 0,
"b": 0,
"count": 4
},
{
"r": 0,
"g": 0,
"b": 255,
"count": 2
},
{
"r": 255,
"g": 0,
"b": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pixels": [
{
"r": 255,
"g": 0,
"b": 0,
"count": 4
},
{
"r": 0,
"g": 0,
"b": 255,
"count": 2
},
{
"r": 255,
"g": 0,
"b": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pixels":[{"r":255,"g":0,"b":0,"count":4},{"r":0,"g":0,"b":255,"count":2},{"r":255,"g":0,"b":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pixels":[{"r":255,"g":0,"b":0,"count":4},{"r":0,"g":0,"b":255,"count":2},{"r":255,"g":0,"b":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"pixels": [
{
"r": 255,
"g": 0,
"b": 0,
"count": 4
},
{
"r": 0,
"g": 0,
"b": 255,
"count": 2
},
{
"r": 255,
"g": 0,
"b": 0
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 15 |
max_megapixels | 12 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |