Работа с изображением в PHP

Автор: Пользователь скрыл имя, 04 Мая 2012 в 19:41, контрольная работа

Описание работы

В области программирования для сети PHP — один из популярных скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности. Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них: автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

Работа содержит 1 файл

Работа с изображением в PHP.doc

— 1,022.00 Кб (Скачать)

 
 
 
 
 
 
 
 
 
 
 
 
 
 

    Результат:

 
 
 
 

Управление  яркостью

    Давайте теперь попробуем поиграть с яркостью изображения. Нижеприведенная функция добавляет целое число (одно и тоже) к каждому каналу пиксела. Если мы вызываем функцию с положительным значением – яркость увеличивается, если с отрицательным – уменьшается.

 
 
<?php  
function adjustBrightness($pixel$factor)  
{  
    return new 
Pixel(  
    
$pixel->$factor,  
    
$pixel->$factor,  
    
$pixel->$factor  
    
);  
}  
?> 

 

    Чтобы протестировать эту функцию выполните  следующий код:

 
<?php  
$brightness 
50;  
$po->pixelOperation($_GET['image'], 'result_bright.png', array($po'adjustBrightness')$brightness);  
echo 
'<br />Ярче: <br /><img src="result_bright.png" />';  
$brightness = -50;  
$po->pixelOperation($_GET['image'], 'result_dark.png', array($po'adjustBrightness')$brightness);  
echo 
'<br />Темнее: <br /><img src="result_dark.png" />';  
echo 
'<hr />';  
?> 

    Смотрим на результат:

 
 

Меняем  местами цвета

    Давайте теперь займемся сменой цветов. Это  означает, что мы можем взять, скажем, количество красных цветов и заменить их, например, на количество синих цветов.  

    Давайте посмотрим, как выглядит функция:

 
<?php  
function swapColors($pixel$factor)  
{      
    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.Удаление или насыщение цветов

    Далее рассматриваем еще функции. Первая – устанавливает значение цвета в (например, нет красного). Вторая – наоборот увеличивает колличество цвета до максимального значения, или сразу канала. Таким образом, мы имеем 6 вариантов значений для каждого метода.

  • Удаление (или насыщение) красный
  • Удаление (или насыщение) зеленый
  • Удаление (или насыщение) синий
  • Удаление (или насыщение) красный и зеленый в то же самое время
  • Удаление (или насыщение) красный и синий
  • Удаление (или насыщение) зеленый и синий

    Код:

<?php  
function removeColor($pixel$factor)  
{  
    if (
$factor == 'r' ) {  
        
$pixel->0;  
    }  
    if (
$factor == 'g' ) {  
        
$pixel->0;  
    }  
    if (
$factor == 'b' ) {  
        
$pixel->0;  
    }  
    if (
$factor == 'rb' || $factor == 'br') {  
        
$pixel->0;  
        
$pixel->0;  
    }  
    if (
$factor == 'rg' || $factor == 'gr') {  
        
$pixel->0;  
        
$pixel->0;  
    }  
    if (
$factor == 'bg' || $factor == 'gb') {  
        
$pixel->0;  
        
$pixel->0;  
    }  
    return 
$pixel;  
}  
 
function 
maxColor($pixel$factor)  
{  
    if (
$factor == 'r' ) {  
        
$pixel->255;  
    }  
    if (
$factor == 'g' ) {  
        
$pixel->255;  
    }  
    if (
$factor == 'b' ) {  
        
$pixel->255;  
    }  
    if (
$factor == 'rb' || $factor == 'br') {  
        
$pixel->255;  
        
$pixel->255;  
    }  
    if (
$factor == 'rg' || $factor == 'gr') {  
        
$pixel->255;  
        
$pixel->255;  
    }  
    if (
$factor == 'bg' || $factor == 'gb') {  
        
$pixel->255;  
        
$pixel->255;  
    }  
    return 
$pixel;  
}  
?>

 
 

    Результаты:

Удаляем красный 
Удаляем зеленый 
Удаляем синий 
Удаляем красный  и зеленый 
Удаляем зеленый и  синий 
Удаляем красный и  синий 
Насыщаем  красный 
Насыщаем зеленый 
Насыщаем синий 
Насыщаем  красный и зеленый 
Насыщаем зеленый  и синий 
Насыщаем красный  и синий 

 

Делаем  негатив 
 

    Эта функция очень проста – у вас  много красного? Значит сделаем мало. И так далее.

 
 
 
<?php  
function negative($pixel)  
{  
    return new 
Pixel(  
    
255 $pixel->g,  
    
255 $pixel->r,  
    
255 $pixel->b  
    
);  
}  
?> 

 

    Результат:                             

Оттенки серого (Grayscale)

    Не  знаю, в курсе вы или нет, но оттенок  серого получается уравниванием RGканалов. Более темные участки имеют больше насыщения, светлые – меньше.

    Чтобы привести изображение к оттенкам серого мы должны взять среднее число насыщения каналов и установить их на среднее число.

<?php  
function greyscale($pixel)  
{  
    
$pixel_average = ($pixel->$pixel->$pixel->b) / 3;  
 
    return new 
Pixel(  
    
$pixel_average,  
    
$pixel_average,  
    
$pixel_average  
    
);  
}  
?> 

    Результат:

 
 

Черно-белое

    В отличие от оттенков серого, черно-белое  изображение имеет только цвета: черный (0,0,0) и белый (255,255,255). $factor мы будем использовать для определения границы того, что считать черным, а что – белым. Простота логики в том, что мы суммируем R+G+Bи смотрим, к чему значение ближе – к 255 или к 0. Использование $factor позволит нам внести некоторую гибкость в алгоритм (внести некоторую субъективность):

 
<?php  
function blackAndWhite($pixel, $factor)  
{  
    
$pixel_total = ($pixel->$pixel->$pixel->b);  
 
    if (
$pixel_total > (((255 $factor) / 2) * 3)) {  
        
// белый  
        
$pixel->255;  
        
$pixel->255;  
        
$pixel->255;  
    } else {  
        
$pixel->0;  
        
$pixel->0;  
        
$pixel->0;  
    }  
 
    return 
$pixel;  
}  
 
?> 

Информация о работе Работа с изображением в PHP