Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Закруглить углы в квадрата(GD)
 
 автор: Emm   (15.06.2008 в 00:23)   письмо автору
 
 

Мне в дальнейшем предстоит создать скрипт, который должен выводить рисунок с произвольным текстом, на рисунке должен быть нарисован прямоугольник определенного цвета, размера, с этим справился, но теперь еще нужно, чтобы углы в нем можно было закруглять определенного радиуса,
тоесть, например, прямоугольник размером 400х170px, а радиус закругления углов 10px..., я вот думаю с помощью ф-ции imagefilledpolygon() это можно реализовать,но как правильно и быстро расчитывать координаты для рисования нужного прямоугольника, с этим грабли, у меня :(, может кто сталкивался с подобной задачей и может подсказать, или может есть где-то класс?

   
 
 автор: Trianon   (15.06.2008 в 01:42)   письмо автору
 
   для: Emm   (15.06.2008 в 00:23)
 

Сомнительно, чтоб imagefilledpolygon смог чем-то помочь.

<?php
$h 
= @$_REQUEST['h']; $w = @$_REQUEST['w']; $r = @$_REQUEST['r'];
if(!(
$r && $h > 2*$r && $w > 2*$r))
    exit(
'
     <form action=? method=post>
     W:<input name=w value=400>
     H:<input name=h value=300>
     R:<input name=r value=20>
     <input type=submit value=Draw>
     </form>    '
);
$w0 = 640; $h0 = 480;
$x0 = ($w0-$w)>>1;
$y0 = ($h0-$h)>>1;

$x3 = $x0+$w-1;
$y3 = $y0+$h-1;
$x1 = $x0+$r;
$y1 = $y0+$r;
$x2 = $x3-$r;
$y2 = $y3-$r;

$im = imagecreate($w0, $h0);
$a = imagecolorallocate($im, 50, 50, 50);
$b = imagecolorallocate($im, 250, 250, 250);
imagefill($im, 1, 1, $a);

imagefilledrectangle($im, $x0, $y0, $x3, $y3, $b);
imagefilledrectangle($im, $x0, $y0, $x1, $y1, $a);
imagefilledarc($im, $x1, $y1, $r*2, $r*2, -180, -90, $b, IMG_ARC_PIE);
imagefilledrectangle($im, $x0, $y2, $x1, $y3, $a);
imagefilledarc($im, $x1, $y2, $r*2, $r*2, 90, 180, $b, IMG_ARC_PIE);
imagefilledrectangle($im, $x2, $y0, $x3, $y1, $a);
imagefilledarc($im, $x2, $y1, $r*2, $r*2, -90, 0, $b, IMG_ARC_PIE);
imagefilledrectangle($im, $x2, $y2, $x3, $y3, $a);
imagefilledarc($im, $x2, $y2, $r*2, $r*2,  0, 90, $b, IMG_ARC_PIE);
imagestring($im, 8, $x1, $y1, 'It looks like a label', $a);

imagegif($im);
?>

   
 
 автор: Emm   (15.06.2008 в 04:25)   письмо автору
 
   для: Trianon   (15.06.2008 в 01:42)
 

Супер, =) огромнейшее спасибо за пример.

У меня, еще очень важный вопрос, эти углы возможно сгладить?

   
 
 автор: Emm   (15.06.2008 в 22:00)   письмо автору
 
   для: Emm   (15.06.2008 в 04:25)
 

Углы сгладил, вобщем все замечательно получилось )

Интересует еще одна вещь, есть ли в php встроенная возможность накладывать разные эффекты к изображению, там, осветление участков, изменение цвета, отражение, итд., ну чтоб не изобретать велосипеды, для разных эффектов, может где-то уже есть свободные классы, если знаете подскажите пожалуйста.

   
 
 автор: Саня   (15.06.2008 в 22:07)   письмо автору
 
   для: Emm   (15.06.2008 в 22:00)
 

Функция imagefilter() в PHP5.

   
 
 автор: Emm   (16.06.2008 в 01:34)   письмо автору
 
   для: Саня   (15.06.2008 в 22:07)
 

Да, спасибо, действительно стандартные)
А чего более продвинутого нет, скажем, мне нужно наложить слой в виде осветления части изображения, падающий свет с верху, и под углом, дело в том, что все изображения разного размера и , и наложение готового эффекта не проканает, необходимо динамически создавать под размер...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования