(PHP 4, PHP 5)
imagecolorclosest — Obtener el índice del color más próximo al color especificado
$image
, int $red
, int $green
, int $blue
)Devuelve el índice del color en la paleta de la imagen que está "más próximo" al valor RGB especificado.
La "distancia" entre el color deseado y cada color en la paleta es calculado como si los valores RGB representaran puntos en un espacio tridimensional.
Si se ha creado la imagen a partir de un fichero, sólo se resolverán los colores utilizados en la imagen. No se resolverán los colores que sólo están presentes en la paleta.
image
Un recurso image, es devuelto por una de las funciones de creación de imágenes, como imagecreatetruecolor().
red
Valor del componente rojo.
green
Valor del componente verde.
blue
Valor del componente azul.
Devuelve el indice del color más próximo, en la paleta de la imagen, al color especificado.
Ejemplo #1 Buscar un conjunto de colores en una imagen
<?php
// Comenzar con una imagen y convertirla a una imagen basada en paleta de colores
$im = imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($im, false, 255);
// Buscar colores (RGB)
$colores = array(
array(254, 145, 154),
array(153, 145, 188),
array(153, 90, 145),
array(255, 137, 92)
);
// Itera cada búsqueda y encuentra el color más próximo en la paleta.
// Devuelve el número de búsqueda, el RGB de búsqueda y la coincidencia RGB convertida
foreach($colores as $id => $rgb)
{
$resultado = imagecolorclosest($im, $rgb[0], $rgb[1], $rgb[2]);
$resultado = imagecolorsforindex($im, $resultado);
$resultado = "({$resultado['red']}, {$resultado['green']}, {$resultado['blue']})";
echo "#$id: Búsqueda ($rgb[0], $rgb[1], $rgb[2]); Coincidencia más próxima: $resultado.\n";
}
imagedestroy($im);
?>
El resultado del ejemplo sería algo similar a:
#0: Búsqueda (254, 145, 154); Coincidencia más próxima: (252, 150, 148). #1: Búsqueda (153, 145, 188); Coincidencia más próxima: (148, 150, 196). #2: Búsqueda (153, 90, 145); Coincidencia más próxima: (148, 90, 156). #3: Búsqueda (255, 137, 92); Coincidencia más próxima: (252, 150, 92).