
13.03.2009, 00:05
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Было уже, именно в этой теме, юзай поиск:
PHP код:
<pre>
<?
@set_time_limit(0);
@ini_set("display_errors","1");
$s_file="1.jpg"; //Файл исходник
$r_file="2.jpg"; //Куда сохранить результат
wb($s_file,$r_file); //Запускаем функцию преобразования картинки
/* Функция для преобразования цветной картинки в черно-белую */
Function wb($file1,$file2) {
//Получаем данные о картинке (высота и ширина)
list($width, $height) = getimagesize($file1);
// Начинаем работу над исходником
$source = imagecreatefromjpeg($file1);
$bwimage= imagecreate($width, $height);
//Создаем 256 цветную палитру
for ($c=0;$c<256;$c++)
{
$palette[$c] = imagecolorallocate($bwimage,$c,$c,$c);
}
//Функция для преобразования rgb-пикселей в черно-белый цвет
function yiq($r,$g,$b)
{
return (($r*0.299)+($g*0.587)+($b*0.114));
}
//Считываем цветовые пиксели (один за другим)
for ($y=0;$y<$height;$y++)
{
for ($x=0;$x<$width;$x++)
{
$rgb = imagecolorat($source,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
//А здесь мы преобразуем все цветные пиксели в черно-белые с помощью функции yiq
$gs = yiq($r,$g,$b);
imagesetpixel($bwimage,$x,$y,$palette[$gs]);
}
}
// Сохраняем нашу получившуюся картинку
imagejpeg($bwimage,$file2);
ImageDestroy($bwimage);
Echo "Done";
}
?>
</pre>
|
|
|