Remplacer une couleur précise dans une image
Passez du rouge au vert dans une liste de pixels d’image. Avec une tolérance de 32, le rouge pur et les deux rouges proches changent, soit 3 pixels sur 5 remplacés. Chaque canal est comparé séparément, ce qui attrape aussi les ombres des bords. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Pixels
- #FF0000, #FF2020, #00FF00, #0000FF, #FE0101
- Cible
- #FF0000
- Tolérance
- 32
- Remplacement
- #00FF00
- Pixels
- #00FF00, #00FF00, #00FF00, #0000FF, #00FF00
- Nombre de remplacements
- 3
- Nombre total
- 5
Un pixel compte comme correspondance lorsque ses canaux rouge, vert et bleu diffèrent de la cible d'au plus la tolérance choisie : avec zéro, seules les correspondances exactes sont remplacées, et une valeur plus grande couvre les ombrages et l'anticrénelage des bords. C'est la version déterministe et hors ligne d'un recoloriage à la baguette magique : sans décodage d'image, sans IA, juste une règle claire de distance par canal que vous pouvez reproduire partout.
Ce que signifie remplacer une couleur avec tolérance
Les images réelles ne contiennent presque jamais une seule couleur unie. Un logo rouge est entouré d'un halo de pixels rosés d'anticrénelage, et la photo d'une voiture rouge contient des dizaines de rouges selon la lumière. Si vous ne changiez que la valeur hexadécimale exacte, le résultat serait inégal et amateur.
La tolérance règle cela en définissant un voisinage autour de la cible : cet outil mesure, pour chaque pixel, la plus grande différence absolue entre les canaux rouge, vert et bleu, et remplace le pixel lorsque cette distance est inférieure ou égale à votre tolérance. Une tolérance de 0 est une égalité stricte, utile pour les icônes, les sprites et les graphismes plats d'interface. Les valeurs entre 16 et 48 sont la plage habituelle pour les dégradés et les photos.
Choisir la cible, la tolérance et le remplacement
Commencez par échantillonner la couleur à faire disparaître. La cible accepte une valeur hexadécimale standard #RRGGBB ; si vous n'êtes pas sûr de la valeur exacte, un outil de couleur dominante ou de palette vous dira de quoi l'image est réellement faite. Réglez ensuite la tolérance en partant de zéro : exécutez avec 0, regardez combien de pixels ont été remplacés, puis augmentez jusqu'à couvrir le halo autour du sujet sans déborder sur les éléments voisins.
Le remplacement est aussi une couleur hexadécimale, écrite telle quelle dans chaque pixel correspondant : il n'y a pas de mélange, donc l'échange est net. Une garde utile à connaître : la tolérance doit être zéro ou un entier positif jusqu'à 255.
Où elle s'intègre dans un vrai flux de travail
L'entrée et la sortie sont des listes de couleurs de pixels, pas des fichiers image encodés, ce qui fait de cette capacité une brique de construction plutôt qu'un éditeur photo complet. Ceux qui l'utilisent extraient généralement les pixels d'une petite ressource — un favicon, une série de graphique, un sprite de jeu, un marqueur de type QR —, les recolorent ici et réassemblent l'image de leur côté. Les équipes marketing s'en servent pour générer les variantes de couleur d'un seul rendu maître.
Les pipelines de graphiques s'en servent pour changer la couleur d'une série sans refaire le rendu. Les outils d'accessibilité s'en servent pour faire correspondre les couleurs problématiques à des couleurs conformes.
Cas d’usage
Recolorer des variantes de produit
Changez la couleur principale d'un rendu produit pour générer tous les coloris depuis une seule ressource maître, la tolérance couvrant l'ombrage des bords.
Re-thématiser un graphique ou un sprite
Faites passer une couleur de l'ancienne palette à la nouvelle couleur de marque sur chaque pixel d'un petit graphique, sans ouvrir d'éditeur.
Corriger une couleur pour l'accessibilité
Remplacez une couleur de marque non conforme par son équivalent accessible dans les icônes et les graphismes d'interface avant la publication.
Questions fréquentes
Combien cela coûte-t-il ?
C'est aussi gratuit dans votre navigateur sur cette page.
Comment une correspondance est-elle décidée ?
Un pixel correspond lorsque la plus grande différence par canal (rouge, vert ou bleu) avec la couleur cible est inférieure ou égale à la tolérance. Avec une tolérance de 0, seules les correspondances exactes sont remplacées.
Que se passe-t-il si la tolérance est négative ?
Une tolérance négative n'a aucun sens et indique généralement un bogue dans le code appelant.
Accepte-t-elle un fichier image ?
Non. Elle opère sur les couleurs des pixels de l'image, fournies sous forme de liste de couleurs hexadécimales #RRGGBB, et renvoie la liste recoloriée. Vous décodez et réassemblez l'image de votre côté.
Quelle tolérance choisir ?
Prenez 0 pour les icônes, les sprites et les graphismes en aplat, et environ 16 à 48 pour les dégradés et les photos. Commencez à zéro, regardez combien de pixels ont changé, puis montez jusqu’à couvrir le halo sans déborder.
Outils associés
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/image/color-replace \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}'const res = await fetch("https://api.kit.forhosting.com/image/color-replace", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-replace",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-replace", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-replace", 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
{
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_replace",
"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.
Limites
max_pixels | 262144 |
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. |
Notes techniques
L'API de remplacement de couleur prend les couleurs des pixels d'une image, une couleur cible, une tolérance et une couleur de remplacement, puis renvoie la liste des pixels avec chaque pixel correspondant déjà échangé.
Ce que signifie remplacer une couleur avec tolérance
La règle étant une simple comparaison numérique, la même entrée produit toujours la même sortie : vous testez dans le navigateur, puis vous automatisez exactement le même appel via l'API avec des résultats identiques, ce qu'il faut quand le recoloriage alimente un pipeline de build ou un générateur de variantes.
Choisir la cible, la tolérance et le remplacement
Une tolérance négative est rejetée avec une erreur invalid_input au lieu d'être tronquée en silence, car un rayon négatif n'a aucun sens et signale généralement un bogue dans le code appelant, que vous préférerez voir immédiatement plutôt que de déboguer ensuite une image subtilement fausse.
Où elle s'intègre dans un vrai flux de travail
L'opération entière est assez économique pour tourner gratuitement dans votre navigateur sur cette page, et coûte $0.002 par requête via l'API quand vous l'automatisez. Aucun fichier n'est téléversé ni conservé, le calcul est entièrement déterministe et la limite de 262144 pixels par appel couvre largement les sprites et les icônes.
Questions techniques
Le résultat est-il déterministe ?
Oui. La règle est une simple comparaison de distance par canal, sans aléatoire : la même entrée produit donc toujours la même sortie dans le navigateur et via l'API.
Y a-t-il une limite de taille ?
Jusqu'à 262144 pixels par appel, ce qui couvre largement les icônes, les sprites et les petites ressources.