Quantizzare un colore sulla voce più vicina della palette
#42A5F5 confrontato con #000, #369, #ffffff e #3fa7f2 viene ricondotto a #3fa7f2, in posizione 3, con una distanza al quadrato di 22. Mantenga i colori scelti dentro l'insieme che il Suo marchio, dispositivo o formato consente. Gratis nel Suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Colore
- #42A5F5
- Tavolozza
- #000, #369, #ffffff, #3fa7f2
- Colore
- #42a5f5
- Colore quantizzato
- #3fa7f2
- Indice della palette
- 3
- Distanza al quadrato
- 22
Quantizzi un colore su una palette fissa quando un'immagine indicizzata, un tema da terminale, un controller LED, una raccolta di token grafici o un formato di esportazione vincolato può usare soltanto colori approvati. Fornisca un colore sorgente esadecimale e una palette ordinata. La funzione convalida ogni valore, confronta le distanze RGB esatte e restituisce il colore normalizzato più vicino, l'indice a partire da zero e la distanza al quadrato. In caso di parità sceglie sempre la prima voce, perciò ogni esecuzione produce lo stesso risultato.
Prepari una palette fissa ben definita
La quantizzazione del colore parte dalle tinte che il sistema di destinazione può realmente memorizzare o visualizzare. Le inserisca nell'array della palette in un ordine stabile e intenzionale, usando la notazione #RGB o #RRGGBB. Le forme brevi vengono espanse prima del confronto e maiuscole o minuscole non cambiano l'esito.
Il colore sorgente segue la stessa notazione. Una palette può contenere da una a 256 voci: un intervallo adatto a piccoli set cromatici aziendali, colori da terminale, tabelle classiche per immagini indicizzate, selezioni di filati da ricamo e molte mappe specifiche per dispositivi. L'ordine conta soltanto quando due voci hanno la stessa distanza dalla sorgente.
In quel caso prevale la prima. Questa regola esplicita rende prevedibile il pareggio e permette di esprimere una preferenza senza modificare le tinte. Mantenga invariata la palette per tutto il lotto se desidera un output indicizzato coerente.
Se lavori diversi riordinano le voci senza segnalarlo, l'indice restituito può cambiare anche quando il colore scelto rimane uguale. Il validatore respinge array vuoti o eccessivi, prefissi mancanti, canali alfa, cifre non valide e valori non testuali invece di formulare ipotesi sull'intenzione.
Comprenda il calcolo deterministico della distanza
Ogni colore accettato viene esteso a sei cifre esadecimali e convertito nei valori dei canali rosso, verde e blu compresi tra 0 e 255. L'algoritmo sottrae ciascun canale della palette dal corrispondente canale sorgente, eleva al quadrato le tre differenze e le somma. Viene selezionata la voce con il totale minore.
È la normale distanza euclidea nello spazio RGB codificato, scelta per una conversione indicizzata trasparente e riproducibile, non per simulare la percezione visiva. Il candidato cambia soltanto quando si trova un valore strettamente inferiore, quindi una distanza uguale non sostituisce mai una voce precedente. Questo dettaglio stabilisce un criterio deterministico anche per palette simmetriche o duplicate.
Casi d'uso
Creare dati per immagini indicizzate
Associ i pixel campionati alle posizioni di una tabella cromatica fissa prima di scrivere una rappresentazione indicizzata.
Applicare i colori aziendali
Agganci qualsiasi colore scelto al componente più vicino di una palette approvata dal sistema grafico.
Supportare hardware limitato
Scelga il valore RGB compatibile più vicino per LED, schermi, terminali o altri dispositivi con colori vincolati.
Domande frequenti
Quali formati di colore sono accettati?
La sorgente e ogni voce della palette devono usare la notazione esadecimale #RGB o #RRGGBB. I canali alfa e i valori senza prefisso vengono rifiutati.
Come viene scelto il colore più vicino?
L'algoritmo riduce al minimo la somma dei quadrati delle differenze tra i canali rosso, verde e blu nello spazio RGB codificato.
Che cosa avviene quando due colori sono equidistanti?
Prevale la voce che compare per prima nella palette, rendendo deterministico il risultato.
L'indice della palette parte da zero?
Sì. La prima voce ha indice 0, la seconda ha indice 1 e così via.
Questa corrispondenza segue la percezione del colore?
No. Usa la distanza euclidea RGB diretta per un output indicizzato semplice, esatto e riproducibile, anziché un modello percettivo.
Strumenti correlati
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/color/quantize-to-palette \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#42a5f5","palette":["#000000","#336699","#ffffff"]}'const res = await fetch("https://api.kit.forhosting.com/color/quantize-to-palette", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#42a5f5",
"palette": [
"#000000",
"#336699",
"#ffffff"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/quantize-to-palette",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#42a5f5",
"palette": [
"#000000",
"#336699",
"#ffffff"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/quantize-to-palette", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#42a5f5","palette":["#000000","#336699","#ffffff"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#42a5f5","palette":["#000000","#336699","#ffffff"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/quantize-to-palette", 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
{
"color": "#42a5f5",
"palette": [
"#000000",
"#336699",
"#ffffff"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.quantize_to_palette",
"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_items | 256 |
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. |
Note tecniche
Comprenda il calcolo deterministico della distanza
Il valore distance_squared restituito è esattamente questo numero intero; la radice quadrata non serve, perché non può cambiare quale distanza non negativa sia la più piccola. Il calcolo è rapido, non dipende dall'ambiente e produce la stessa risposta nel browser e tramite API. Il risultato include inoltre il colore sorgente normalizzato e palette_index a partire da zero, così Lei può scrivere direttamente un indice conservando il valore esadecimale scelto nei registri, nelle anteprime o nelle convalide successive.
Usi il risultato in sicurezza in un flusso indicizzato
Gli indici iniziano da zero, secondo le convenzioni comuni di array ed elaborazione delle immagini. Un valore pari a zero indica che la sorgente era già presente nella palette, mentre un valore maggiore segnala uno spostamento più ampio dei canali. La Sua applicazione può stabilire una soglia adatta al settore e rifiutare conversioni troppo distanti, benché questa funzione restituisca sempre la voce valida matematicamente più vicina senza imporre limiti arbitrari. Per più colori, applichi la stessa operazione pura a ciascun elemento con la medesima palette ordinata. Per una singola ricerca, usi quantized_color ovunque la destinazione richieda il valore esadecimale selezionato. Per una memorizzazione indicizzata, usi palette_index come posizione stabile nella palette esatta inviata con la richiesta. Conservi la palette insieme agli indici memorizzati: un indice non mantiene alcun significato cromatico autonomo dopo che la palette viene riordinata o sostituita. distance_squared è utile per i controlli di qualità. Non sono presenti rete, casualità, data, stato nascosto o modello adattivo, quindi input identici generano lo stesso JSON.
Domande tecniche
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La versione per browser esegue localmente la stessa logica deterministica.