Для выполнения данной задачи нашел в сети интересную реализацию, которая мне очень понравилась. Следующий код сделает из любого изображения черно-белое:
$img_src = "ваша картинка.png"; $original = imagecreatefrompng($img_src); // если картинка не png меняем на нужную функцию $im = imagecreate(imagesx($original), imagesy($original)); for ($i = 0; $i <= 255; $i++) { $palette[$i] = imagecolorallocate($im, $i, $i, $i); } for($x = 0; $x < imagesx($original); $x++) { for($y = 0; $y < imagesy($original); $y++) { $rgb = imagecolorat($original, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8 ) & 0xFF; $b = $rgb & 0xFF; imagesetpixel($im, $x, $y, $palette[grayscale($r, $g, $b)]); } } imagepng($im, 'result.png'); function grayscale($r, $g, $b) { return 0.199*$r + 0.587*$g + 0.114*$b; }
спасибо автору