eXorithm – Execute Algorithm: View / Run Algorithm duotone_image

Logo Beta

function duotone_image ($image$rplus$gplus$bplus$pcnt
{
  // Adapted from http://www.tuxradar.com/practicalphp/11/2/21
  
  $imagex = imagesx$image);
  $imagey = imagesy$image);
  
  $image2 = imagecreatetruecolor$imagex$imagey);
  imagesavealpha$image2, true);
  imagealphablending$image2, false);
  
  for ($x = 0; $x <$imagex; ++$x) {
    for ($y = 0; $y <$imagey; ++$y) {
      $rgb = imagecolorat$image$x$y);
      $color = imagecolorsforindex$image$rgb);
      $grey = floor(($color'red']+$color'green']+$color'blue'])/3);
      if ($pcnt) {
        $red = $grey + $grey*($rplus/150);
        $green = $grey + $grey*($gplus/150);
        $blue = $grey + $grey*($bplus/150);
      } else {
        $red = $grey + $rplus
        $green = $grey + $gplus
        $blue = $grey + $bplus
      }
      
      if ($red > 255) $red = 255;
      if ($green > 255) $green = 255;
      if ($blue > 255) $blue = 255;
      if ($red < 0) $red = 0;
      if ($green < 0) $green = 0;
      if ($blue < 0) $blue = 0;
      
      $newcol = imagecolorallocatealpha$image2$red$green$blue$color'alpha']);
      imagesetpixel ($image2$x$y$newcol);
    }
  }
  
  return $image2