Создание черно-белой картинки из цветной через PHP
Для преобразования цветной картинки в черно-белую, необходимо создать пустой холст размером, как и исходная картинка. После этого, необходимо задать пустому изображению черно-белую (серую) палитру. И этих приготовлений остается только объединить исходное изображение с пустым холстом и вывести результат.
// исходная картинка
$image = "test.jpg";
// получаем размеры исходного изображения
$imgSize = getimagesize($image);
$width = $imgSize[0];
$height = $imgSize[1];
// создаем новое изображение
$img = imagecreate($width,$height);
// задаем серую палитру для нового изображения
for ($color = 0; $color <= 255; $color++) {
imagecolorallocate($img, $color, $color, $color);
}
// создаем изображение из исходного
$source = imagecreatefromjpeg($image);
// объединяем исходное изображение и серое
imagecopymerge(
$img, $source, 0, 0, 0, 0,
$width, $height, 100
);
// заголовок для браузера
header('Content-type: image/png');
// выводим картинку в браузере
imagepng($img);
// чистим память
imagedestroy($img);
imagedestroy($source);
Источник: Из книги «128 рецептов php»

