В созданной функции используем встроенные:
ImageColorsTotal - встроенная функция, сколько всего цветов в изображении.
Imagecreatefromgif - создаёт новое изображение из файла или URL.
Код PHP
<?php
# col (количество цветов) 0 для серого, 1 для красного, 2 зелёного, 3 синего
function MakeColoursGrey($im,$col){
$total=ImageColorsTotal($im);
for($i=0;$i<$total;$i++){
$old=ImageColorsForIndex($im,$i);
$commongrey=(int)($old['red']+$old['green']+$old['blue'])/3;
if(!$col){
ImageColorSet($im,$i,$commongrey,$commongrey,$commongrey);
}elseif($col==1){
ImageColorSet($im,$i,$commongrey,0,0);
}elseif($col==2){
ImageColorSet($im,$i,0,$commongrey,0);
}elseif($col==3){
ImageColorSet($im,$i,0,0,$commongrey);
}
}
}
$img=imagecreatefromgif($src);
// выбираем изображение и цвет
MakeColoursGrey($img,$col);
// задаём для хедера нужный тип
Header("Content-Type: image/gif");
// возвращаем изображение
ImageGif($img);
?>
Спасибо за внимание!