Как програмно заокруглить края у картинки

Статус
В этой теме нельзя размещать новые ответы.

pslava

Постоялец
Регистрация
16 Май 2007
Сообщения
618
Реакции
134
Интересует как можна на пхп реализовать заокругление краев у рисунка, фон заокругление заранее известен
 
Первое что приходит в голову - создать 4 картинки закругления (по углам) и наложить функцией imagecopyresampled() на нужный рисунок.

Хотя можно проще, при выводе картинки в браузере, просто сверху наложить слой с "углами".
 
Первое что приходит в голову - создать 4 картинки закругления (по углам) и наложить функцией imagecopyresampled() на нужный рисунок.

Можна пример?

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

Код:
<?
  $img_file="x_e1a08c6c.jpg"; // сама картинка

  // в переменную $pic подгрузим картинку, в зависимости от типа файла
  $picinfo=getimagesize($img_file);
  if ($picinfo[2]==1) // gif
    $pic=imagecreatefromgif($img_file);
  if ($picinfo[2]==2) // jpg
    $pic=imagecreatefromjpeg($img_file);
  if ($picinfo[2]==3) // png
    $pic=imagecreatefrompng($img_file);
  // заведём ширину и высоту картинки
  $w=$picinfo[0];
  $h=$picinfo[1];
  
  $corner_width=16; // ширина картинки угла
  $corner_height=16; // высота картинки угла

  // право верх
  $c=imagecreatefrompng("c_ru.png");
  imagecopyresampled($pic, $c, ($w-$corner_width), 0, 0, 0, $corner_width, $corner_height, $corner_width, $corner_height);

  // право низ
  $c=imagecreatefrompng("c_rd.png");
  imagecopyresampled($pic, $c, ($w-$corner_width), ($h-$corner_height), 0, 0, $corner_width, $corner_height, $corner_width, $corner_height);

  // лево верх
  $c=imagecreatefrompng("c_lu.png");
  imagecopyresampled($pic, $c, 0, 0, 0, 0, $corner_width, $corner_height, $corner_width, $corner_height);

  // лево низ
  $c=imagecreatefrompng("c_ld.png");
  imagecopyresampled($pic, $c, 0, ($h-$corner_height), 0, 0, $corner_width, $corner_height, $corner_width, $corner_height);

  // выводим в браузер
  header("Content-type: image/jpeg");
  imagejpeg($pic);
?>

Картинка "До"
2814be79b0ab.jpg


Она же "После"
b7c3defb1668.jpg


Файлы c_ld.png, и т.п. представляют из себя .png картинки 16х16 для соответствующих углов.

Добавлено через 14 минут
Это занимает ресурсы и время и юзвер замечает процес наложения.
И для этого варианта примерчик тоже было неплохо:)

Вот тут вообще на CSS:
Для просмотра ссылки Войди или Зарегистрируйся
 
На css не подходит, потмоу что есть возможность что узер бдует наблюдать процес заокругления :D, проще заокруглить раз при заливке и не мучаться.
Всем спасибо вопрос закрыт.
 
phpthumb, можно посмотреть - накладывать поверх картинки - полупрозрачную png с закругленными краями для фиксированных размеров 100% подойдет, для произвольных не знаю точно.
 
phpthumb, можно посмотреть - накладывать поверх картинки - полупрозрачную png с закругленными краями для фиксированных размеров 100% подойдет, для произвольных не знаю точно.

Приведённый пример как раз это и делает для произвольных размеров.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху