imagecolorclosest

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorclosestDevuelve el índice de la color más cercana a una color dada

Descripción

imagecolorclosest(
    GdImage $image,
    int $red,
    int $green,
    int $blue
): int

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 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.

Parámetros

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.

Los argumentos sobre las colores son enteros comprendidos entre 0 y 255 o hexadecimales comprendidos entre 0x00 y 0xFF.

Valores devueltos

Devuelve el índice de la color más cercana, en la paleta de la imagen, a la dada.

Historial de cambios

Versión Descripción
8.0.0 image expects a GdImage instance now; previously, a valid gd resource was expected.

Ejemplos

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";
}

?>

El resultado del ejemplo sería algo 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).

Ver también