Blog. Just Blog

Эффект витражного стекла на PHP

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Эффект витражного стекла на PHP
Эффект витражного стекла на PHP

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

Парой строчек кода тут не ограничиться, преобразование выполняется в несколько шагов. Некоторые части алгоритма рекомендую взять на заметку, они вам могут пригодиться в дальнейшем.

Оригинальное изображение
Оригинальное изображение

Сперва надо загрузить изображение и "набросать" на него в случайном порядке точки, которые будут являться вершинами треугольников. Но не просто так, а во-первых, с заданной плотностью, и во-вторых, с учетом близости к границам изображения. Нужные значения вы можете подобрать опытным путем.
  1. $border_density=700;
  2. $image_density=100;
  3. $min_distance=60;
  4.  
  5. $im=imagecreatefromjpeg('image.jpg');
  6.  
  7. $width=imagesx($im);
  8. $height=imagesy($im);
  9.  
  10. $p=array();
  11.  
  12. //--------------------------------------------------------------
  13. // Накидывание на изображение точек с заданной плотностью
  14. //--------------------------------------------------------------
  15. for ($y=0$y<$height$y++) {
  16.     for ($x=0$x<$width$x++) {
  17.         $density=$image_density;
  18.  
  19.         if ($x==|| $y==|| $x==($width-1) || ($y==$height-1)) {
  20.             $density=$border_density;
  21.         }
  22.  
  23.         if (($x==&& $y==0) || ($x==&& $y==$height-1) ||
  24.             ($x==($width-1) && $y==0) ||