<?php

  ini_set
("xdebug.max_nesting_level"50000);
  
  
$img imagecreatefromjpeg("someimage.jpg");
  
  function 
imagefillthreshold($image$x$y$colour$threshold$find null) {
  
    
// get dimensions
    
$w imagesx($image);
    
$h imagesy($image);
    
    if (
$x $w && $x >= && $y $h && $y >= 0) {
    
      
// get current colour at this pixel
      
$cur_colour imagecolorat($image$x$y);
      list(
$r1$g1$b1$a1) = array_values(imagecolorsforindex($image$cur_colour));
      
      if (
$find === null)
        
$find imagecolorallocate($image$r1$g1$b1);
      
      list(
$r2$g2$b2$a2) = array_values(imagecolorsforindex($image$find));
      
      
$RD $r1 $r2;
      
$GD $g1 $g2;
      
$BD $b1 $b2;
      
$colour_diff sqrt$RD $RD $GD $GD $BD $BD ) ;
      
      if (
$colour_diff <= $threshold) {
        
imagefilledrectangle($image$x$y$x$y$colour);
        
        
// top
        
if ($y && imagecolorat($image$x$y 1) != $colour)
          
imagefillthreshold($image$x$y 1$colour$threshold$find);
        
// right
        
if ($x $w && imagecolorat($image$x 1$y) != $colour)
          
imagefillthreshold($image$x 1$y$colour$threshold$find);
        
// bottom
        
if ($y $h && imagecolorat($image$x$y +1) != $colour)
          
imagefillthreshold($image$x$y 1$colour$threshold$find);
        
// left
        
if ($x && imagecolorat($image$x 1$y) != $colour)
          
imagefillthreshold($image$x 1$y$colour$threshold$find);
          
      }
      
    }
    
  }

  
imagefillthreshold($img00imagecolorallocate($img25500), 200);
  
//imagefill($img, $x, $y, imagecolorallocate($img, 255, 0, 0));
  
  
imagepng($img);