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

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

Оригинальное изображение
Сперва надо загрузить изображение и "набросать" на него в случайном порядке точки, которые будут являться вершинами треугольников. Но не просто так, а во-первых, с заданной плотностью, и во-вторых, с учетом близости к границам изображения. Нужные значения вы можете подобрать опытным путем.
Code (PHP) : Убрать нумерацию
- $border_density=700;
- $image_density=100;
- $min_distance=60;
- $im=imagecreatefromjpeg('image.jpg');
- $width=imagesx($im);
- $height=imagesy($im);
- $p=array();
- //--------------------------------------------------------------
- // Накидывание на изображение точек с заданной плотностью
- //--------------------------------------------------------------
- for ($y=0; $y<$height; $y++) {
- for ($x=0; $x<$width; $x++) {
- $density=$image_density;
- if ($x==0 || $y==0 || $x==($width-1) || ($y==$height-1)) {
- $density=$border_density;
- }
- if (($x==0 && $y==0) || ($x==0 && $y==$height-1) ||
- ($x==($width-1) && $y==0) ||