eXorithm – Execute Algorithm: View / Run Algorithm blur_image

Logo Beta

function blur_image ($image$level

{

  // based on http://www.tuxradar.com/practicalphp/11/2/25

  

  $imagex = imagesx$image);

  $imagey = imagesy$image);

  $tc = imageistruecolor$image);

  

  $new_image = imagecreatetruecolor$imagex$imagey);

  imagealphablending$new_image, false);

  imagesavealpha$new_image, true);

  

  $level = $level-1;

  

  for ($x = 0; $x < $imagex; ++$x) {

    for ($y = 0; $y < $imagey; ++$y) {

      $newr = 0;

      $newg = 0;

      $newb = 0;

      $newt = 0;

      

      $colours = array();

      $thiscol = imagecolorat$image$x$y);

      

      for ($k = $x - $level$k <= $x + $level; ++$k) {

        for ($l = $y - $level$l <= $y + $level; ++$l) {

          if ($k < 0) { $colours[] = $thiscolcontinue; }

          if ($k >= $imagex) { $colours[] = $thiscolcontinue; }

          if ($l < 0) { $colours[] = $thiscolcontinue; }

          if ($l >= $imagey) { $colours[] = $thiscolcontinue; }

          $colours[] = imagecolorat$image$k$l);

        }

      }

      

      foreach$colours as $colour) {

        if ($tc) {

          $newr += ($colour >> 16) & 0xFF;

          $newg += ($colour >> 8) & 0xFF;

          $newb += $colour & 0xFF;

          $newt += ($colour >> 24) & 0xFF;

        } else {

          $c = imagecolorsforindex$image$colour);

          $newr += $c'red'];

          $newg += $c'green'];

          $newb += $c'blue'];

          $newt += $c'alpha'];

        }

      }

    

      $numelements = count$colours);

      $newr /= $numelements

      $newg /= $numelements

      $newb /= $numelements

      $newt /= $numelements

      

      $newcol = imagecolorallocatealpha$new_image$newr$newg$newb$newt);

      imagesetpixel$new_image$x$y$newcol);

    }

  }

  

  return $new_image