Convertisseur YIQ vers RGB
Ce convertisseur YIQ vers RGB transforme la luminance et les deux composantes de chrominance du modèle NTSC en valeurs rouges, vertes et bleues directement utilisables.
Lancer gratuitement
Il applique une matrice inverse fixe, fournit les canaux normalisés et sur 8 bits, puis signale tout écrêtage nécessaire pour rester dans la gamme RGB affichable. Une validation stricte refuse les données absentes, non numériques, infinies ou hors limites avant le calcul. Sans accès réseau, il restitue toujours le même résultat pour les mêmes composantes Y, I et Q.
Saisissez correctement les composantes YIQ normalisées
Fournissez trois composantes numériques : Y pour la luminance, I pour la chrominance en phase et Q pour la chrominance en quadrature. Y doit être compris entre 0 et 1, I entre -0.5957 et 0.5957, et Q entre -0.5226 et 0.5226. Il s’agit des limites normalisées du modèle YIQ NTSC, et non d’octets ou de pourcentages. Une valeur Y proche de zéro correspond à une faible luminance, tandis qu’une valeur proche de un indique une forte luminance. Les composantes signées I et Q portent l’information chromatique autour de cette luminance. Envoyez de véritables nombres JSON, jamais des chaînes numériques, afin que le contrat reste sans ambiguïté dans l’API, les SDK et le formulaire web. Le convertisseur refuse les valeurs manquantes, les chaînes, les valeurs assimilables à NaN, les infinis et les nombres hors des domaines déclarés. Cette rigueur empêche une erreur de saisie ou d’échelle de produire une couleur faussement crédible. Les alias luminance, in_phase et quadrature sont acceptés, mais y, i et q restent les champs canoniques.
Comprenez la matrice NTSC inverse et l’écrêtage
Le calcul applique la transformation fixe R = Y + 0.956I + 0.621Q, G = Y - 0.272I - 0.647Q et B = Y - 1.106I + 1.703Q. Chaque équation produit d’abord un canal normalisé non écrêté. Des composantes YIQ valides peuvent néanmoins décrire une couleur extérieure au cube RGB, car le domaine YIQ autorisé ne coïncide pas avec toutes les combinaisons rouge, verte et bleue bornées entre zéro et un. Chaque sortie brute est donc limitée séparément : une valeur inférieure à zéro devient zéro, et une valeur supérieure à un devient un. Le convertisseur conserve les valeurs antérieures dans unclamped_rgb et repère chaque canal concerné dans clipped ; l’écrêtage n’est ainsi jamais dissimulé. Il multiplie ensuite chaque composante normalisée limitée par 255 et l’arrondit à l’entier le plus proche pour créer les canaux usuels sur 8 bits. Ces mêmes canaux forment une couleur hexadécimale minuscule à six chiffres et une valeur CSS rgb(). Les coefficients fixes et l’arrondi stable garantissent des résultats reproductibles.
Interprétez le résultat et utilisez-le prudemment
Choisissez red, green et blue lorsqu’une application attend trois canaux entiers séparés ; rgb pour un tableau de trois éléments ; hex pour un outil de création ou un sélecteur de couleur ; et css pour une feuille de style. normalized_rgb convient aux logiciels graphiques qui emploient des canaux de zéro à un. unclamped_rgb sert au diagnostic plutôt qu’à l’affichage : il expose le résultat de la matrice avant la limitation de gamme. Examinez clipped lorsque la fidélité chromatique compte. Un canal écrêté signifie que le point YIQ demandé se trouve hors du RGB affichable ; la couleur renvoyée est alors une approximation par limitation indépendante, et non une représentation exactement réversible. Cette nuance est essentielle pour étudier d’anciens signaux télévisés, transposer des formules de traitement d’image ou comparer des implémentations fondées sur d’autres coefficients. Consignez la matrice choisie si un autre système peut employer une définition YIQ différente. Le service traite une conversion par requête au tarif $0.002 via l’API, sans réseau, hasard, horloge, état caché ni formatage régional.
Cas d’usage
Décoder des données couleur NTSC anciennes
Transformez les échantillons normalisés de luminance et de chrominance d’un jeu YIQ pédagogique ou archivé en canaux RGB affichables.
Contrôler une implémentation graphique
Comparez votre matrice inverse, son écrêtage, son format hexadécimal et son arrondi à une référence déterministe.
Étudier les couleurs hors gamme
Consultez les valeurs brutes et les indicateurs par canal pour comprendre pourquoi un point YIQ valide sort du cube RGB.
Questions fréquentes
Quelles plages d’entrée sont acceptées ?
Y accepte 0 à 1, I accepte -0.5957 à 0.5957 et Q accepte -0.5226 à 0.5226. Les trois valeurs doivent être des nombres JSON finis.
Quelle matrice inverse est appliquée ?
La formule est R = Y + 0.956I + 0.621Q, G = Y - 0.272I - 0.647Q et B = Y - 1.106I + 1.703Q.
Pourquoi une entrée YIQ valide peut-elle être écrêtée ?
Le domaine valide peut dépasser le cube RGB normalisé. Les canaux bruts hors de 0 à 1 sont limités pour l’affichage.
Comment obtenez-vous les canaux RGB sur 8 bits ?
Chaque canal normalisé est borné entre 0 et 1, multiplié par 255, puis arrondi à l’entier le plus proche.
Cette conversion est-elle réversible ?
Seulement si les coefficients et l’arrondi concordent et si aucun canal n’est écrêté. L’arrondi entier supprime également de la précision.
Quel est le prix d’une requête API ?
Chaque requête coûte $0.002. Une requête convertit un élément de couleur YIQ.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"y": 0.5,
"i": 0.2,
"q": -0.1
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.yiq_rgb",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |