PHP, рдЖрдБрдЦреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╡рддрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ



рд╣рд╛рд▓ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреА рддрд░рд╣ , рдореБрдЭреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрд╡рддрд╛рд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рдерд╛ред рдореБрдЭреЗ рддреБрд░рдВрдд "рднрдЧреНрди" рдЕрд╡рддрд╛рд░ рдпрд╛рдж рдЖрдпрд╛ред

рдореБрдЦреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЫрд╡рд┐ рдХреЗ 1/4 рднрд╛рдЧ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ 90 ┬░ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:


sortsy
<?php $w=150; $h=150; $cols=4; $im = imageCreate($w,$h); $del=1.5; $mw = $w/$del; $mh = $h/$del; $c = imageColorAllocate($im, 245, 245, 245); imagefilledrectangle($im, 0, 0, $w, $h, $c); $c = array(rand(0,200),rand(0,200),rand(0,200)); for($zz=0;$zz<5;$zz++) { $im = createPolgon($im, $w, $h, $mw, $mh,5, $c, 75); } header('Content-type: image/jpg'); imagepng($im); imagedestroy($im); function createPolgon($image, $width, $height, $mwidth, $mheight, $count, $color, $merge) { $img = imageCreate($width,$height); $c = imageColorAllocate($img, 245, 245, 245); imagefilledrectangle($img, 0, 0, $width, $height, $c); for($i=0;$i<$count;$i++) { $c = imageColorAllocate($image,$color[0],$color[1],$color[2]); $cnt=3; $values=array(rand(0,$mwidth), rand(0,$mheight),rand(0,$mwidth), rand(0,$mheight),rand(0,$mwidth), rand(0,$mheight)); imagefilledpolygon($image, $values, $cnt, $c); } $rotate = imagerotate($image, 90, 0); imagecopymerge($image, $rotate, 0, 0, 0, 0, $width, $height, 50); $rotate = imagerotate($image, 180, 0); imagecopymerge($image, $rotate, 0, 0, 0, 0, $width, $height, 50); imagecopymerge($img, $image, 0, 0, 0, 0, $width, $height, $merge); return $img; } 



рдХрд┐рд╕реА рднреА рдбрд┐рдЬрд╛рдЗрдирд░ рдХреА рддрд░рд╣, рд╡рд╣ "рд░рдВрдЧреЛрдВ рдФрд░ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рд╛", рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ред рдлрд┐рд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдЪреЗрд╣рд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖред рдореИрдВрдиреЗ рднреА $ $ e рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ред рдпреЛрдЬрдирд╛рдПрдВ "рдХрд╛рд░реНрдЯреВрди" рд╢реИрд▓реА рдореЗрдВ рдХреЗрд╡рд▓ рдЪреЗрд╣рд░реЗ рдХреА рдкреАрдврд╝реА рдереАрдВ - рдмрд╣реБ-рд░рдВрдЧреАрди рдЖрдВрдЦреЛрдВ, рдмрд╛рд▓реЛрдВ рдФрд░ рдХрд╛рд░реНрдЯреВрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рд╕рд╛рдорд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ - рдЪрд╢реНрдорд╛, рдмреНрд▓рд╢, рдлреНрд░реАрдХрд▓реНрд╕, рдЖрджрд┐ ...
рдЬрд▓реНрджреА рд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛


рдФрд░ рдЪреЗрд╣рд░реЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдЖрдВрдЦреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдВрдЦ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд░реВрдк рдПрдХ рдмреВрдВрдж рд╣реИред



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд░реВрдк рдЕрд╡рддрд╛рд░ рдХреЗ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╣реИ - рдирдереБрдиреЗ, рд╣реЛрдВрда, рдЖрджрд┐ред рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ - рдПрдХ рдкрд░рд╡рд▓рдп рд╕реЗ ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдЪрд╛рд░ рдореЗрдВ рд╕реЗ:



рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдЖрдзреЗ рдкрд░рд╡рд▓рдп рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
 /* $width, $height - ,   $quality -   */ $color = imageColorAllocate($image,45,45,45) $points = array(); for($x=0; $x<=$width/2; $x+=$quality) { $y=($x*$x) / (($width)*($width)) * $height; array_push($points, $x, $y); } imagefilledpolygon($image, $points, count($points)/2, $color); 


рдФрд░ Imagefilledpolygon рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд░рдгреА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдореЗрдВ рдмрд╣реБрднреБрдЬ рдХреЛ рдЪрдпрдирд┐рдд рд░рдВрдЧ рд╕реЗ рднрд░рддрд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдБ PHP рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред
рдХрд╛рд▓реЗ рд░рдВрдЧ рдореЗрдВ рдЖрдВрдЦ рдХрд╛ рдкрддрд▓рд╛ рд╕реНрдЯреНрд░реЛрдХ рдХрд░реЗрдВред Imagepolygon - рдмрд╕ рд╕рд╣реА - рдПрдХ рдмрд╣реБрднреБрдЬ рд░реВрдкрд░реЗрдЦрд╛ рдПрдХ рднрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ред

рд╕реНрдЯреНрд░реЛрдХ, рдЖрдВрдЦреЛрдВ рдХреА рдЫрд╛рдпрд╛, рдЫрд╛рдпрд╛, рд╕рдлреЗрджред


рдкреБрддрд▓реА рдФрд░ рдЪрдХрд╛рдЪреМрдВрдз рдХреЛ рдЗрдореЗрдЬрдлрд┐рд▓рдбреЗрд▓рд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдиреЗрддреНрд░рдЧреЛрд▓рдХ, рд▓реЗрдВрд╕ рднрдбрд╝рдХрдирд╛ред


рд░реИрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдиреЗрддреНрд░ рдЕрдиреБрдХреВрд▓рди

рдХрдЪреНрдЪрд╛ рд╕реНрд░реЛрдд
 <?php /*   .   ,   .   -  .  -    . */ $Width=500; $Height=300; $img = imageCreate($Width,$Height); $r = rand(5,200);$g = rand(5,200);$b = rand(5,200); $c = imageColorAllocate($img, 255,255,255); imagefilledrectangle($img, 0, 0, $Width, $Height, $c); //------------------- ------------------------// $w = rand(100,150); $h = rand(100,100); $zsize=rand(20,50); $max = rand(2,7)/10; $max2= 0.5; $zxr = rand(-$w/5,$w/5); $zyr = rand(-$h/5,$h/5); $zform = rand(3,8)/10; $mejg = rand($w/2,$w); $zc = imageColorAllocate($img,rand(5,150),rand(5,150),rand(5,150)); $ec = imageColorAllocate($img,$r,$g,$b); $ebc = imageColorAllocate($img,rand(235,255),rand(235,255),rand(230,255)); $eform = rand(90,100)/100; $eform2 = rand(70,100)/100; $rznglaz = rand(80,120)/100; $rznglaz2 = rand(80,120)/100; $smeshx = (500 - ($w*2+$mejg))/2; DrawEye($img, $smeshx+0,0, $w*$rznglaz,$h ,$ec, $ebc, $eform, $eform2, $zxr, $zyr, $zc, $max, $max2, $zform, $zsize); if(rand(0,5)==0) $zc = imageColorAllocate($img,rand(5,150),rand(5,150),rand(5,150)); DrawEye($img, $smeshx+$w + $mejg, 0, $w*$rznglaz2, $h, $ec, $ebc, $eform, $eform2, $zxr, $zyr, $zc, 1-$max, $max2, $zform, $zsize); //imageellipse ( $img , 100 , 100 ,100 , 100 , imageColorAllocate($img,45,45,45) ); //imagefilledellipse ( $img , 200 , 200 ,100 , 100 , imageColorAllocate($img,45,45,45) ); //-----------------   -----------------------// header('Content-type: image/png'); imagepng($img); imagedestroy($img); //-------------------------------------------------------// function DrawEye($image, $xx, $yy, $w, $h, $ec, $ebc, $eform, $eform2, $zxr,$zyr, $zc, $max, $max2, $zform, $zsize) { /* if($w<$h) $zsize = $w/3; else $zsize = $h/3; */ DrawEyePoligon($image,$xx-5,95-5,$w+10,$h+10, imageColorAllocate($image,5,5,5), 1, $max, $max2, 0); DrawEyePoligon($image,$xx,95,$w,$h, imageColorAllocate($image,5,5,5), 1, $max, $max2, 1); DrawEyePoligon($image,$xx,100,$w,$h*$eform, $ec, 1, $max, $max2, 1); DrawEyePoligon($image,$xx+10,100+$zform*10,$w-20,$h*$eform2, $ebc, 1, $max2,$max2, 1); DrawEyePoligon($image,$xx+10,100+$zform*10,$w-20,$h*$eform2, $ebc, 1, $max2,$max2, 1); imagefilledellipse ( $image, $xx+$w/2+$zxr,140+$zyr, $zsize, $zsize, $zc); imagefilledellipse ( $image, $xx+$w/2+$zxr,140+$zyr, $zsize * $zform, $zsize*(1-$zform), imageColorAllocate($image,5,5,5)); imagefilledellipse ( $image, $xx+$w/2+$zxr+10,140+$zyr-10, $zsize * 0.5, $zsize*0.5, imageColorAllocate($image,255,255,255)); } //-------------------------------------------------------// function DrawEyePoligon($image, $xx, $yy, $width, $height, $color, $quality, $max, $max2, $fill) { $height/=2; if($quality>$width/2) $quality=$width/2; $points = array(); for($i=0; $i<=$width; $i+=$quality) { $x = $i-$width; $y=($x*$x) / (($width)*($width)) * $height; array_push($points, $i*$max, $y); } for($i=0; $i<=$width; $i+=$quality) { $x = $i; $y=($x*$x) / (($width)*($width)) * $height; //$y=(($width*$width)-($x*$x)) / (($width)*($width)) * $height; array_push($points, $i*(1-$max)+($width*$max), $y); } for($i=0; $i<=$width; $i+=$quality) { $x = $i-$width; $y=-($x*$x) / (($width)*($width)) * $height; array_push($points, $i*$max2, 2*$height+$y); } for($i=0; $i<=$width; $i+=$quality) { $x = $i; $y=-($x*$x) / (($width)*($width)) * $height; //$y=(($width*$width)-($x*$x)) / (($width)*($width)) * $height; array_push($points, $i*(1-$max2)+($width*$max2), 2*$height+$y); } DrawPoligon($image, $xx, $yy, $points, $color, $fill); } //-------------------------------------------------------// function DrawPoligon($image, $x, $y, $points, $color, $fill) { for($i=0; $i<count($points); $i+=2) { $points[$i]+=$x; $points[$i+1]+=$y; } if($fill) imagefilledpolygon($image, $points, count($points)/2, $color); else imagepolygon($image, $points, count($points)/2, $color); } 



рдЪреЗрд╣рд░реЗ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЗ (рдмрд╛рд▓ рдФрд░ рд╕рд╛рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рдореЛрдЯрд╛ рдорд╛рдЗрдирд╕ рд╣реИ - рдпрд╣ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛрдиреЗ рдкрд░ рднреА рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред рдФрд░ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдмрд╛рдК рдФрд░ рдиреАрд░рд╕ред рдлрд┐рд░ рдордЫрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рдФрд░ рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЙрддрд╛рд░ рджреЗрдВред

Source: https://habr.com/ru/post/In164243/


All Articles