Автор: Пользователь скрыл имя, 04 Мая 2012 в 19:41, контрольная работа
В области программирования для сети PHP — один из популярных скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности. Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них: автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
Результат:
Управление яркостью
Давайте теперь попробуем поиграть с яркостью изображения. Нижеприведенная функция добавляет целое число (одно и тоже) к каждому каналу пиксела. Если мы вызываем функцию с положительным значением – яркость увеличивается, если с отрицательным – уменьшается.
<?php function adjustBrightness($ { return new Pixel( $pixel->r + $factor, $pixel->g + $factor, $pixel->b + $factor ); } ?> |
Чтобы протестировать эту функцию выполните следующий код:
<?php $brightness = 50; $po->pixelOperation($_GET[' echo '<br />Ярче: <br /><img src="result_bright.png" />'; $brightness = -50; $po->pixelOperation($_GET[' echo '<br />Темнее: <br /><img src="result_dark.png" />'; echo '<hr />'; ?> |
Смотрим на результат:
Меняем местами цвета
Давайте
теперь займемся сменой цветов. Это
означает, что мы можем взять, скажем,
количество красных цветов и заменить
их, например, на количество синих цветов.
Давайте посмотрим, как выглядит функция:
<?php function swapColors($pixel, $ { switch ($factor) { case 'rbg': return new Pixel( $pixel->r, $pixel->b, $pixel->g ); break; case 'bgr': return new Pixel( $pixel->b, $pixel->g, $pixel->r ); break; case 'brg': return new Pixel( $pixel->b, $pixel->r, $pixel->g ); break; case 'gbr': return new Pixel( $pixel->g, $pixel->b, $pixel->r ); break; case 'grb': return new Pixel( $pixel->g, $pixel->r, $pixel->b ); break; default: return $pixel; } } ?> |
Тестируем:
RGB -> RBG |
RGB -> BGR |
RGB -> BRG |
RGB -> GBR |
RGB -> GRB |
2.Удаление или насыщение цветов
Далее рассматриваем еще 2 функции. Первая – устанавливает значение цвета в 0 (например, нет красного). Вторая – наоборот увеличивает колличество цвета до максимального значения, или сразу 2 канала. Таким образом, мы имеем 6 вариантов значений для каждого метода.
Код:
<?php function removeColor($pixel, $ { if ($factor == 'r' ) { $pixel->r = 0; } if ($factor == 'g' ) { $pixel->g = 0; } if ($factor == 'b' ) { $pixel->b = 0; } if ($factor == 'rb' || $factor == $pixel->r = 0; $pixel->b = 0; } if ($factor == 'rg' || $factor == $pixel->r = 0; $pixel->g = 0; } if ($factor == 'bg' || $factor == $pixel->b = 0; $pixel->g = 0; } return $pixel; } function maxColor($pixel, $ { if ($factor == 'r' ) { $pixel->r = 255; } if ($factor == 'g' ) { $pixel->g = 255; } if ($factor == 'b' ) { $pixel->b = 255; } if ($factor == 'rb' || $factor == $pixel->r = 255; $pixel->b = 255; } if ($factor == 'rg' || $factor == $pixel->r = 255; $pixel->g = 255; } if ($factor == 'bg' || $factor == $pixel->b = 255; $pixel->g = 255; } return $pixel; } ?> |
Результаты:
Удаляем красный |
Удаляем зеленый |
Удаляем синий |
Удаляем красный
и зеленый |
Удаляем зеленый и
синий |
Удаляем красный и
синий |
Насыщаем
красный |
Насыщаем зеленый |
Насыщаем синий |
Насыщаем
красный и зеленый |
Насыщаем зеленый
и синий |
Насыщаем красный
и синий |
Делаем
негатив
Эта функция очень проста – у вас много красного? Значит сделаем мало. И так далее.
<?php function negative($pixel) { return new Pixel( 255 - $pixel->g, 255 - $pixel->r, 255 - $pixel->b ); } ?> |
Результат:
Оттенки серого (Grayscale)
Не знаю, в курсе вы или нет, но оттенок серого получается уравниванием R, G, B каналов. Более темные участки имеют больше насыщения, светлые – меньше.
Чтобы привести изображение к оттенкам серого мы должны взять среднее число насыщения каналов и установить их на среднее число.
<?php function greyscale($pixel) { $pixel_average = ($pixel->r + $pixel->g + $ return new Pixel( $pixel_average, $pixel_average, $pixel_average ); } ?> |
Результат:
Черно-белое
В
отличие от оттенков серого, черно-белое
изображение имеет только 2 цве
<?php function blackAndWhite($pixel, { $pixel_total = ($pixel->r + $pixel->g + $ if ($pixel_total > (((255 + $factor) / 2) * 3)) { // белый $pixel->r = 255; $pixel->g = 255; $pixel->b = 255; } else { $pixel->r = 0; $pixel->g = 0; $pixel->b = 0; } return $pixel; } ?> |