Функция Color2GrayScale() используется для конвертации цветного изображения в чёрно-белое.
Замечание при конвертировании изображений TrueColor, эти изображения будут преобразованы в изображения с палитрой размером 256 цветов.
Эта функция ничего не возвращает.
$img – идентификатор ресурса Вашего изображения.
$dither – если исходное изображение – изображение TrueColor, то следует ли применять «дрожание» при конвертировании его в изображение с палитрой. Если этот аргумент равен TRUE, то будет применено «дрожание», что приведёт к более пятнистому изображению, но с лучшим приближением цвета. Смотрите также imagetruecolortopalette.
Для работы функции требуется установленная библиотека http://php.net/GD 2.0.1 или более поздняя.
Функцию можно использовать для РНР 4 >= 4.0.6 или более поздние версии.
Для PHP5 можно использовать новую встроенную функцию imagefilter ($im, IMG_FILTER_GRAYSCALE);
Исходный текст функции. Вариант 1.
<?php function Color2GrayScale(&$img, $dither = true) // by SiMM { if (!($i = imagecolorstotal($img))) imagetruecolortopalette($img, $dither, $i = 256); while ($i--) { $c = imagecolorsforindex($img,$i); // формула взята с http://www.computerra.ru/print/softerra/technologizm/21208/ $c = 0.299*$c['red'] + 0.587*$c['green'] + 0.114*$c['blue']; imagecolorset($img,$i,$c,$c,$c); } } ?>
Этот вариант отличается от предыдущего способом вычисления серого значения цвета.
Предпочтительнее использовать, видимо, первый вариант, но Вы можете провести эксперименты на нескольких типичных для Вашего случая изображениях и использовать тот вариант, который Вам больше подходит.
Пример применения функции.
<?php
// загружаем файл и создаём ресурс с изображением $img_file = 'http://www.aleksey.com/xmlsec/images/bart.gif'; $img = imagecreatefromstring(file_get_contents($img_file));
// преобразуем изображение в чёрно-белое Color2GrayScale($img);
//выдаём изображение в браузер header("Content-type: image/gif"); imagegif($img);