Tienes dos opciones al parecer ..
Código PHP:
function ConvertGreyscale($image){
# this file outputs a grey version of specified image
$total = ImageColorsTotal($image);
for( $i=0; $i<$total; $i++){
$old = ImageColorsForIndex($image, $i);
#trying to keep proper saturation when converting
$commongrey = (int)(($old[red] + $old[green] + $old[blue]) / 3);
ImageColorSet($image, $i, $commongrey, $commongrey, $commongrey);
}
}
$image será tu recurso de imagen .. es decir .. lo que te resulta de hacer un imagecreatefrom....() o similar. Ahí tienes la función ImageColorsForIndex() que es la que andabas buscando junto con la otra ImageColorSet() para dar el nuevo color .. y otros cálculos con la paleta de colores ...
Y un ejemplo completo ...
Código PHP:
<?
// $image aquí será tu "nose.jpg" ...
$image_id = imageCreateFromJPEG($image);
for($a=0;$a<imagecolorstotal ($image_id);$a++)
{
$color = ImageColorsForIndex($image_id,$i);
$R=.299 * ($color['red'])+ .587 * ($color['green'])+ .114 * ($color['blue']);
$G=.299 * ($color['red'])+ .587 * ($color['green'])+ .114 * ($color['blue']);
$B=.299 * ($color['red'])+ .587 * ($color['green'])+ .114 * ($color['blue']);
ImageColorSet($image_id, $a, $R, $G, $B);
}
imageJPEG($image_id,"$image");
?>
(en este ejemplo .. genera el archivo nuevo sobreescribiendo el mismo .. cambia el nombre en imageJPEG() si necesitas crear la versión B&W de un original dado ...)
Extraido de .. (c) sus respectivos autores ...
http://www.webmasterworld.com/forum88/884.htm
Un saludo,