(PHP 4, PHP 5, PHP 7, PHP 8)
imagecolorclosest — Devuelve el índice de la color más cercana a una color dada
Devuelve el índice de la color de la paleta que es la más cercana al valor RGB pasado.
La "distancia" entre la color deseada y las colores de la paleta se calcula considerando el espacio RGB como un espacio de 3 dimensiones.
Si la imagen fue creada a partir de un archivo, solo se resuelven los colores utilizados en la imagen. Los colores presentes únicamente en la paleta no se resuelven.
imageUn objeto GdImage, retornado por una de las funciones de creación de imágenes, como imagecreatetruecolor().
redValor del componente rojo.
greenValor del componente verde.
blueValor del componente azul.
Devuelve el índice de la color más cercana, en la paleta de la imagen, a la dada.
| Versión | Descripción |
|---|---|
| 8.0.0 |
image ahora espera una instancia de GdImage;
anteriormente, se esperaba un resource gd válido.
|
Ejemplo #1 Búsqueda de un juego de colores en una imagen
<?php
// Se comienza con una imagen y se convierte en una imagen de paleta
$im = imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($im, false, 255);
// Colores buscados (RGB)
$colors = array(
array(254, 145, 154),
array(153, 145, 188),
array(153, 90, 145),
array(255, 137, 92)
);
// Se itera sobre cada búsqueda y se encuentra la color de la paleta más cercana.
// Devuelve el número de la búsqueda, el RGB buscado y la correspondencia en RGB
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: Búsqueda ($rgb[0], $rgb[1], $rgb[2]); Correspondencia : $result.\n";
}
?>Resultado del ejemplo anterior es similar a:
#0: Búsqueda (254, 145, 154); Correspondencia : (252, 150, 148). #1: Búsqueda (153, 145, 188); Correspondencia : (148, 150, 196). #2: Búsqueda (153, 90, 145); Correspondencia : (148, 90, 156). #3: Búsqueda (255, 137, 92); Correspondencia : (252, 150, 92).