A script that changes colors depending on get variable
important to note: I had little success with pngs and getting true red
gifs work much better
<?php
//0 is yellow, 1 is red, 2 is blue
$y = 1 - ceil($_GET["c"]/2);
$r = 1 - floor($_GET["c"]/2);
$b = floor($_GET["c"]/2);
$gd = imagecreatefromgif("example.gif");
imagecolorset($gd, imagecolorexact($gd, 255, 0, 0), $r*255, $y*255, $b*255);
imagecolorset($gd, imagecolorexact($gd, 191, 0, 0), $r*191, $y*191, $b*191);
imagecolorset($gd, imagecolorexact($gd, 128, 0, 0), $r*128, $y*128, $b*128);
imagecolorset($gd, imagecolorexact($gd, 255, 0, 0), $r*64, $y*64, $b*64);
header('Content-Type: image/gif');
imagegif($gd);
?>
imagecolorexact
(PHP 4, PHP 5)
imagecolorexact — Obtener el índice del color especificado
Descripción
int imagecolorexact
( resource
$image
, int $red
, int $green
, int $blue
)Devuelve el índice del color especificado en la paleta de la imagen.
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.
Valores devueltos
Devuelve el índice del color especificado en la paleta, o -1 si el color no existe.
Ejemplos
Ejemplo #1 Obtener colores del logotipo de GD
<?php
// Establece una imagen
$im = imagecreatefrompng('./gdlogo.png');
$colores = Array();
$colores[] = imagecolorexact($im, 255, 0, 0);
$colores[] = imagecolorexact($im, 0, 0, 0);
$colores[] = imagecolorexact($im, 255, 255, 255);
$colores[] = imagecolorexact($im, 100, 255, 52);
print_r($colores);
// Libera memoria
imagedestroy($im);
?>
El resultado del ejemplo sería algo similar a:
Array
(
[0] => 16711680
[1] => 0
[2] => 16777215
[3] => 6618932
)
samtobia at geemail dot com ¶
2 years ago
jbr at ya-right dot com ¶
7 years ago
A few notes about this function...
This function will only work on images where the palette is 256 colors or less. You also can not use imagetruecolortopalette() to reduce the palette on a true color PNG image that has greater than 256 colors in it's palette, then call this function. If you try to do this imagecolorexact() will report colors not being in the image when they are in the image!
1. works on png(s) 8bit/256 colors or less.
2. works on all gif(s)
3. does not work on any type of jpg/jpeg image.
info at educar dot pro dot br ¶
7 years ago
<?php
$src = "../images/pic.gif";
$red = 9;
$green = 9;
$blue = 4;
$pic0026 = imagecreatefromgif ( $src );
$ind = imagecolorexact ( $pic, $red, $green, $blue );
echo '<img src="../images/pic.gif" border="0" alt="pic" title="View pic" /><br /><br />';
echo "RED ( " . $red . " ) GREEN ( " . $green . " ) BLUE ( " . $blue . " )<br />-> Palette Index = " . $ind;
if ( $ind != -1 )
{
echo "<br />[ The color exists! ]";
}
else
{
echo "<br />[ The color does not exist! ]";
}
imagedestroy ( $pic );
?>
