(PHP 4, PHP 5, PHP 7)
imagecolorclosest — Retourne l'index de la couleur la plus proche d'une couleur donnée
$image
, int $red
, int $green
, int $blue
)Retourne l'index de la couleur de la palette qui est la plus proche de la valeur RGB passée.
La "distance" entre la couleur souhaitée et les couleurs de la palette est calculée en considérant l'espace RGB comme un espace à 3 dimensions.
Si vous créez l'image depuis un fichier, seules les couleurs utilisées dans l'image seront résolues. Les couleurs uniquement présentes dans la palette ne le seront pas.
image
Une ressource d'image, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().
red
Valeur du composant rouge.
green
Valeur du composant vert.
blue
Valeur du composant bleu.
Retourne l'index de la couleur la plus proche, dans la palette de l'image, de celle donnée.
Exemple #1 Recherche d'un jeu de couleur dans une image
<?php
// On commence avec une image et on la convertit en une image à palette
$im = imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($im, false, 255);
// Couleurs recherchées (RVB)
$colors = array(
array(254, 145, 154),
array(153, 145, 188),
array(153, 90, 145),
array(255, 137, 92)
);
// On boucle sur chaque recherche et on trouve la couleur de la palette la plus proche.
// Retourne le numéro de la recherche, le RVB cherché et la correspondance en RVB
foreach($colors as $id => $rgb)
{
$result = imagecolorclosest($im, $rgb[0], $rgb[1], $rgb[2]);
$result = imagecolorsforindex($im, $result);
$result = "({$result['red']}, {$result['green']}, {$result['blue']})";
echo "#$id: Recherche ($rgb[0], $rgb[1], $rgb[2]); Correspondance : $result.\n";
}
imagedestroy($im);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
#0: Recherche (254, 145, 154); Correspondance : (252, 150, 148). #1: Recherche (153, 145, 188); Correspondance : (148, 150, 196). #2: Recherche (153, 90, 145); Correspondance : (148, 90, 156). #3: Recherche (255, 137, 92); Correspondance : (252, 150, 92).