Андрей Белов,
08-01-2007 04:06
(ссылка)
Набор функций для работы с изображениями в PHP
Выложил Набор функций для работы с изображениями в PHP.
Он очень скудный, но работает. И то, что было нужно.
Итак. А сейчас мы немного поизвращаемся. Копи-паст... И без подсветки синтаксиса мы получаем это:
> 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;
}
?>
Здесь функции для сепии и для блюра.
А вот это - пример:
Вперед, удаляем фотошоп и юзаем данные скрипты. Проверено, работает в 100 раз медленнее, зато с открытыми кодами.
Ваш Wizart
Он очень скудный, но работает. И то, что было нужно.
Итак. А сейчас мы немного поизвращаемся. Копи-паст... И без подсветки синтаксиса мы получаем это:
> 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;
}
?>
Здесь функции для сепии и для блюра.
А вот это - пример:
Вперед, удаляем фотошоп и юзаем данные скрипты. Проверено, работает в 100 раз медленнее, зато с открытыми кодами.
Ваш Wizart
настроение: Другое
хочется: В carantine.mail.ru
слушаю: Ушами
ICQ Bot своими руками на PHP =)
Привет всем.. не буду многословен, просто дам ссылку..
http://snet-group.org/files...
качайте и наслаждайтесь..
А вот собсно к чему все это..
Я тут просто загнался на тему написания разных приложений на пхп и вот..
Мне подали идею бота.. ну я, естесно, написал.. =)
Читайте, качайте, радуйтесь..
Только, если это Вас не затруднит, делайте ссылку на сайт автора, то есть мой сайт.. ок??
Тогда все хорошо..
=)
Всем приятного настроения, а я спать..
http://snet-group.org/files...
качайте и наслаждайтесь..
А вот собсно к чему все это..
Я тут просто загнался на тему написания разных приложений на пхп и вот..
Мне подали идею бота.. ну я, естесно, написал.. =)
Читайте, качайте, радуйтесь..
Только, если это Вас не затруднит, делайте ссылку на сайт автора, то есть мой сайт.. ок??
Тогда все хорошо..
=)
Всем приятного настроения, а я спать..
настроение: В спешке
хочется: спать
слушаю: жжужание клавы BTC 6300CL
cout << "Hello world";
Вот и первая запись нашего блога кодеров и программеров...
Честно говоря создал я этот блог от скуки и пока смотрю уже появился один участник, надеюсь так пойдет и дальше...
Ладно, пока мне сказать больше нечего, могу только пожелать всем творческих успехов... Дерзайте! =)
Честно говоря создал я этот блог от скуки и пока смотрю уже появился один участник, надеюсь так пойдет и дальше...
Ладно, пока мне сказать больше нечего, могу только пожелать всем творческих успехов... Дерзайте! =)
настроение: С чувством выполненного долга
хочется: Чаю...
слушаю: тишину
В этой группе, возможно, есть записи, доступные только её участникам.
Чтобы их читать, Вам нужно вступить в группу
Чтобы их читать, Вам нужно вступить в группу