|
|
|
|
|
для: CBE4KuH
(02.03.2008 в 12:02)
| |
<?php
//функция преобразования в серый цвет
//по цветовой модели YIQ
//задается с помощью установки значений трех параметров:
//Y - интенсивности (luminance,)
//и двух цветностей I и Q
//на этом базируется представления цвета в ТВ.
//Здесь RGB значения цветов берутся
//с соответсвующими весовыми коэффициентами
function gray($r,$g,$b) {
return (($r*0.299)+($g*0.587)+($b*0.114));
}
//открываем файл для конвертирования
$file = "image.png";
//заголовoк
header('Content-type: image/png');
//получаем размеры изображения
list($width, $height) = getimagesize($file);
//cоздаем изображение png из файла
$sourceimage = imagecreatefrompng($file);
//cоздаем холст
$grayimage = imagecreate($width, $height);
//cоздаем 256-цветную палитру
for ($c=0; $c<256; $c++) {
$palette[$c] = imagecolorallocate($grayimage,$c,$c,$c);
}
//считываем исходное изображение попиксельно
for ($y=0; $y<$height ;$y++) {
for ($x=0; $x<$width; $x++) {
//возвращаем индекс цвета пикселя в цветовой палитре
$rgb = imagecolorat($sourceimage,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
//изменяем палитру цветного изображения в серое
$gs = gray($r,$g,$b);
imagesetpixel($grayimage,$x,$y,$palette[$gs]);
}
}
//вывод в браузер
imagepng($grayimage);
//освобождаем память
imagedestroy($grayimage);
?>
|
Не проверял, но должно работать, ну если будут ошибки, можно подправить. | |
|
|
|
|
|
|
|
для: CBE4KuH
(02.03.2008 в 02:44)
| | Неужели никто не знает? | |
|
|
|
|
|
|
| Народ, подскажите пожалуйста, как изменить палитру *.png рисунка в оттенки серого средствами gdlib? | |
|
|
|
|