Все игры
Запись

Набор функций для работы с изображениями в PHP

настроение:Другое
хочется:В carantine.mail.ru
слушаю:Ушами

Написать комментарий


Андрей Белов      08-01-2007 04:10 (ссылка)
Re: Набор функций для работы с изображениями в PHP
Значит так... мы все видели, как прекрасно все работает. для того, у кого отображается пишу отдельно функции: // возвращает значение цвета $c ('r', 'g' или 'b') в точке ($x;$y).
function get_color($x,$y,$c,$image)
{
$rgb = imagecolorat($image, $x, $y);
if ( $c == 'r' ) return ($rgb >> 16) & 0xFF;
if ( $c == 'g' ) return ($rgb >> 8) & 0xFF;
if ( $c == 'b' ) return $rgb & 0xFF;
}

// возвращает средний цвет на для квадрата со стороной $area*2+1 пикселей
function get_middle($x, $y, $c, $area, $image)
{
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$middle = 0;
$pixels = 0;
for ( $i = -$area; $i<=$area; $i++ )
for ( $j = -$area; $j<=$area; $j++ )
{
if ( !( $i == 0 and $j == 0 ) and $x+$i>=0 and $x+$i<$x_dimension and $y+$j>=0 and $y+$j<$y_dimension )
{
$middle += get_color($x+$i, $y+$j, $c, $image);
$pixels ++ ;
}
}

//(pow($area*2+1, 2)-1
$middle = round( $middle/$pixels );
return $middle;
}

// возвращает изображение, к которому применен фильтр BLUR с параметрами $area и $strength - сила воздействия
// значение $strength - от 0 до 1. Не влияет на скорость выполнения скрипта.
// зачение area - от 1. Это значение очень сильно влияет на скорость выполнения скрипта.
function blur($image, $strength, $area)
{
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);

for ($x = 0; $x < $x_dimension; $x++) {
for ($y = 0; $y < $y_dimension; $y++) {

$r = get_color($x,$y,'r', $image);
$g = get_color($x,$y,'g', $image);
$b = get_color($x,$y,'b', $image);

// обработка изображения.

$r = $r*(1-$strength)+get_middle($x, $y, 'r', $area, $image)*$strength;
$g = $g*(1-$strength)+get_middle($x, $y, 'g', $area, $image)*$strength;
$b = $b*(1-$strength)+get_middle($x, $y, 'b', $area, $image)*$strength;

//-----------------------

$r = ($r>255)? 255 : (($r<0)? $r=0: $r);
$g = ($g>255)? 255 : (($g<0)? $g=0: $g);
$b = ($b>255)? 255 : (($b<0)? $b=0: $b);
$color = imagecolorallocate(
$image,
$r,
$g,
$b
);
imagesetpixel($new_image, $x, $y, $color);
}

}

return $new_image;
}

// возвращает изображение, к которому применен фильтр СЕПИЯ
function sepia($image)
{
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);

for ($x = 0; $x < $x_dimension; $x++) {
for ($y = 0; $y < $y_dimension; $y++) {

$r = get_color($x,$y,'r', $image);
$g = get_color($x,$y,'g', $image);
$b = get_color($x,$y,'b', $image);

// обработка изображения.

$color = ($r+$g+$b)/3;

$r = round($color*1.43);
$g = round($color*1.05);
$b = round($color*0.7);

//-----------------------

$r = ($r>255)? 255 : (($r<0)? 0: $r);
$g = ($g>255)? 255 : (($g<0)? 0: $g);
$b = ($b>255)? 255 : (($b<0)? 0: $b);
$color = imagecolorallocate(
$image,
$r,
$g,
$b
);
imagesetpixel($new_image, $x, $y, $color);
}

}

return $new_image;
}

// Окрашивает Изображение в определенный цвет заданный в RGB
function color($image, $red, $green, $blue)
{
$x_dimension = imagesx($image);
$y_dimension = imagesy($image);
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);

for ($x = 0; $x < $x_dimension; $x++) {
for ($y = 0; $y < $y_dimension; $y++) {

$r = get_color($x,$y,'r', $image);
$g = get_color($x,$y,'g', $image);
$b = get_color($x,$y,'b', $image);

// обработка изображения.

$color = ($r+$g+$b)/3;

$r = $color+round($color*($color/$red));
$g = $color+round($color*(126-$color/$green));
$b = $color+round($color*($color/$blue));

//-----------------------

$r = ($r>255)? 255 : (($r<0)? 0: $r);
$g = ($g>255)? 255 : (($g<0)? 0: $g);
$b = ($b>255)? 255 : (($b<0)? 0: $b);
$color = imagecolorallocate(
$image,
$r,
$g,
$b
);
imagesetpixel($new_image, $x, $y, $color);
}

}

return $new_image;
}
Андрей Белов      08-01-2007 04:11 (ссылка)
Re: Набор функций для работы с изображениями в PHP
Очень криво. Нельзя редактировать
Глюк один сплошной этот mail.ru
Андрей Белов      08-01-2007 04:12 (ссылка)
Re: Набор функций для работы с изображениями в PHP
Очень криво. Нельзя редактировать
Глюк один сплошной этот mail.ru

Написать комментарий