Чёрно-белая картинка

Сделать чёрно-белую картинку можно через функцию imagefilter() с параметром IMG_FILTER_GRAYSCALE.

function image_create($image_path) {
    $ext = pathinfo($image_path, PATHINFO_EXTENSION);
    switch($ext) {
        case 'jpg':
            $im = imagecreatefromjpeg($image_path);
            break;
        case 'png':
            $im = imagecreatefrompng($image_path);
            break;
        default:
            throw new Exception('Неверный формат файла');
    }

    unset($ext);
    return $im;
}

function grayscale($image_source, $save_as) {
    
    // Проверка наличия изображения
    if (!file_exists($image_source)) { throw new Exception('Изображение '.$image_source.' не найдено'); }
    
    $image = image_create($image_source);
    imagefilter($image, IMG_FILTER_GRAYSCALE);
    
    // сохранение картинки
    imagepng($image, $save_as);
    
    // освобождение памяти
    imagedestroy($image);
}

// создание чёрно-белой картинки
grayscale('image.png', 'grayscale.png');