Распил картинки на квадратики

  1. function koecrushimage($imgfile, $sidepart=4) {
  2.  
  3. $root = realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR;
  4.  
  5. $dir = 'img';
  6.  
  7. $crushdir = 'crush';
  8.  
  9. if (!is_dir($root . $dir))
  10. mkdir($root . $dir, 0777, true);
  11.  
  12. if (!is_dir($root . $dir . DIRECTORY_SEPARATOR . $crushdir))
  13. mkdir($root . $dir . DIRECTORY_SEPARATOR . $crushdir, 0777, true);
  14.  
  15. $parts = pow($sidepart, 2);
  16.  
  17. if (!is_dir($root . $dir . DIRECTORY_SEPARATOR . $crushdir . DIRECTORY_SEPARATOR . substr($imgfile, 0, -4) . DIRECTORY_SEPARATOR . $parts))
  18. mkdir($root . $dir . DIRECTORY_SEPARATOR . $crushdir . DIRECTORY_SEPARATOR . substr($imgfile, 0, -4) . DIRECTORY_SEPARATOR . $parts, 0777, true);
  19.  
  20. $img = imagecreatefromjpeg($root . $dir . DIRECTORY_SEPARATOR . $imgfile);
  21. $x = imagesx($img);
  22. $y = imagesy($img);
  23. $newx = (intval($x/$sidepart))*$sidepart;
  24. $newy = (intval($y/$sidepart))*$sidepart;
  25. $newimg = imagecreatetruecolor($newx, $newy);
  26. imagefill($newimg, 0, 0, 0x000000);
  27. imagecopyresampled($newimg, $img, 0, 0, 0, 0, $x, $y, $newx, $newy);
  28. $picx = $newx/$sidepart;
  29. $picy = $newy/$sidepart;
  30.  
  31. for ($i=0, $gorizontal=0; $i<$parts; $i++) {
  32. $newpic = imagecreatetruecolor($picx, $picy);
  33. imagefill($newpic, 0, 0, 0x000000);
  34. if ((($i%$sidepart)==0) && ($i!=0)) {
  35. $gorizontal++;
  36. }
  37. $vertical = ($i!=0) ? ($i%$sidepart) : $i;
  38. imagecopyresampled($newpic, $newimg, 0, 0, ($vertical*$picx), ($gorizontal*$picy), $picx, $picy, $picx, $picy);
  39. imagejpeg($newpic, $root . $dir . DIRECTORY_SEPARATOR . $crushdir . DIRECTORY_SEPARATOR . substr($imgfile, 0, -4) . DIRECTORY_SEPARATOR . $parts . DIRECTORY_SEPARATOR . 'pic' . ($i+1) . '.jpg', 25);
  40. imagedestroy($newpic);
  41. }
  42. screen($parts, $dir . DIRECTORY_SEPARATOR . $crushdir . DIRECTORY_SEPARATOR . substr($imgfile, 0, -4) . DIRECTORY_SEPARATOR . $parts);
  43. }
  44.  
  45. function screen($parts, $dir) {
  46. echo '<table><tr>' . PHP_EOL;
  47. for ($i=1;$i<=$parts;$i++) {
  48. echo '<td>' . PHP_EOL;
  49. echo '<img src="' . $dir . DIRECTORY_SEPARATOR . 'pic' . $i . '.jpg" alt="' . $i . '" />' . PHP_EOL;
  50. echo '</td>' . PHP_EOL;
  51. if (($i%(sqrt($parts))==0) && ($i!=0)){
  52. echo '</tr><tr>' . PHP_EOL;
  53. }
  54. }
  55. echo '</tr></table>' . PHP_EOL;
  56. }
  57.  
  58. koecrushimage('test.jpg', 10);
рядом с файлом создать папку img, в нее положить файл картинки *.jpg
  имя картинки передать в функцию, второй параметр не обязательный, пилит картинку на кучу квадратиков

Реклама

Мы в соцсетях

tw tg yt gt