Convertitore YIQ in RGB
Questo convertitore da YIQ a RGB trasforma la luminanza e le due componenti di crominanza del modello NTSC in valori pratici di rosso, verde e blu.
Esegui gratis nel browser
Applica una matrice inversa fissa, restituisce canali normalizzati e a 8 bit e segnala quando un canale deve essere ritagliato entro la gamma RGB visualizzabile. Una convalida rigorosa intercetta dati mancanti, non numerici, infiniti o fuori dominio prima del calcolo. Senza accesso alla rete, produce sempre lo stesso risultato per le medesime componenti Y, I e Q.
Inserisca correttamente le componenti YIQ normalizzate
Fornisca tre componenti numeriche: Y per la luminanza, I per la crominanza in fase e Q per la crominanza in quadratura. Y deve essere compresa tra 0 e 1, I tra -0.5957 e 0.5957 e Q tra -0.5226 e 0.5226. Questi sono i limiti normalizzati del modello YIQ NTSC, non valori in byte né percentuali. Un valore Y vicino a zero rappresenta una luminanza bassa, mentre un valore vicino a uno indica una luminanza elevata. Le componenti I e Q con segno trasportano le informazioni cromatiche attorno a tale luminanza. Invii veri numeri JSON anziché stringhe numeriche, così il contratto rimane inequivocabile nell’API, negli SDK e nel modulo web. Il convertitore rifiuta valori mancanti, stringhe, valori simili a NaN, infiniti e numeri esterni agli intervalli dichiarati. Questa rigidità impedisce che un errore di digitazione o di scala produca un colore apparentemente plausibile. Sono accettati gli alias luminance, in_phase e quadrature, ma y, i e q restano i campi canonici.
Comprenda la matrice NTSC inversa e il ritaglio
Il calcolo usa la trasformazione inversa fissa R = Y + 0.956I + 0.621Q, G = Y - 0.272I - 0.647Q e B = Y - 1.106I + 1.703Q. Ogni equazione produce inizialmente un canale normalizzato non ritagliato. Anche componenti YIQ valide possono descrivere un colore esterno al cubo RGB, perché la regione YIQ ammessa non coincide con tutte le combinazioni di rosso, verde e blu comprese fra zero e uno. Pertanto ogni uscita grezza viene limitata separatamente: i valori sotto zero diventano zero e quelli sopra uno diventano uno. Il convertitore conserva i dati precedenti al ritaglio in unclamped_rgb e identifica ogni canale interessato in clipped, rendendo sempre visibile la modifica. Poi moltiplica ogni componente normalizzata limitata per 255 e arrotonda all’intero più vicino per ottenere i consueti canali a 8 bit. Gli stessi canali sono formattati come colore esadecimale minuscolo di sei cifre e come valore CSS rgb(). Coefficienti fissi e arrotondamento decimale stabile garantiscono risultati ripetibili.
Legga il risultato e lo utilizzi correttamente
Usi red, green e blue quando un’applicazione richiede canali interi separati; rgb quando richiede un array di tre elementi; hex per strumenti grafici e selettori colore; oppure css per un foglio di stile. normalized_rgb è utile nel codice grafico che tratta canali da zero a uno. unclamped_rgb è diagnostico e non direttamente visualizzabile: mostra ciò che la matrice ha prodotto prima del limite di gamma. Controlli clipped quando la fedeltà cromatica è importante. Un canale ritagliato indica che il punto YIQ richiesto è esterno allo spazio RGB visualizzabile e che il colore restituito è l’approssimazione ottenuta limitando separatamente i canali, non una rappresentazione esattamente reversibile. La differenza è importante quando si analizzano vecchi segnali televisivi, si trasferiscono formule di elaborazione delle immagini o si confrontano implementazioni con coefficienti diversi. Registri la matrice scelta se altri sistemi potrebbero usare una diversa definizione YIQ. L’endpoint esegue una conversione per richiesta al costo di $0.002 tramite API, senza rete, casualità, orologio, stato nascosto o formattazione locale.
Casi d'uso
Decodificare dati cromatici NTSC storici
Converta campioni normalizzati di luminanza e crominanza di un archivio YIQ o di un set didattico in canali RGB visualizzabili.
Verificare un’implementazione grafica
Confronti matrice inversa, ritaglio di gamma, formato esadecimale e arrotondamento con un riferimento deterministico.
Esaminare colori fuori gamma
Usi valori non ritagliati e indicatori per canale per capire perché un punto YIQ valido non rientra esattamente nel cubo RGB.
Domande frequenti
Quali intervalli di ingresso sono accettati?
Y accetta da 0 a 1, I da -0.5957 a 0.5957 e Q da -0.5226 a 0.5226. Tutti devono essere numeri JSON finiti.
Quale matrice inversa usa il convertitore?
Usa R = Y + 0.956I + 0.621Q, G = Y - 0.272I - 0.647Q e B = Y - 1.106I + 1.703Q.
Perché un ingresso YIQ valido può essere ritagliato?
Gli intervalli validi possono superare il cubo RGB normalizzato. I canali grezzi esterni a 0–1 vengono limitati per la visualizzazione.
Come vengono prodotti i canali RGB a 8 bit?
Ogni canale normalizzato viene limitato fra 0 e 1, moltiplicato per 255 e arrotondato all’intero più vicino.
La conversione è reversibile?
Solo se coefficienti e arrotondamento coincidono e nessun canale viene ritagliato. Anche l’arrotondamento intero elimina precisione.
Quanto costa una richiesta API?
Ogni richiesta costa $0.002. La conversione elabora un elemento cromatico YIQ per richiesta.
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/yiq-rgb \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"y":0.5,"i":0.2,"q":-0.1}'const res = await fetch("https://api.kit.forhosting.com/color/yiq-rgb", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"y": 0.5,
"i": 0.2,
"q": -0.1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/yiq-rgb",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"y": 0.5,
"i": 0.2,
"q": -0.1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/yiq-rgb", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"y":0.5,"i":0.2,"q":-0.1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"y":0.5,"i":0.2,"q":-0.1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/yiq-rgb", 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
{
"y": 0.5,
"i": 0.2,
"q": -0.1
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.yiq_rgb",
"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.
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. |