AYUDA FUNCION EN PHP

lochino
25 de Mayo del 2005
Hola tengo una funcion que lo que quiero es que me transorme una imagen de color a blanco y negro pero al momento de lanzarla no me funciona, no hace nada. Les dejo aqui el codigo:

<?
//creamos la funcion para pintar en la que le pasamos la imagen, la coordenada x y la y

function pintar($imagen, $x, $y) {

$w = ImageSX($imagen); //Obtenemos el ancho de la imagen
$h = ImageSY($imagen); //Obtenemos el alto de la imagen
//echo "$w"; 115
//echo "$h"; 82
$rastreo = array(); //Todos los puntos de la imagen que se deberan analizar
$rastreo = array($x, $y); //Metemos el primer punto en la imagen

//11
while (count($rastreo) > 0) { //Mientras la cola no este vacia
$xy = array_shift($rastreo); //Sacamos el primer punto de la matriz
$xr = $xy;
//Cogemos XRight, el que irá pintando hacia la derecha
$xl = $xr-1; //Cogemos XLeft, el que irá pintando hacia la izquierda //pero uno menos que XRight porque ese punto ya esta pintando
$y= $xy;
//Cogemos la Y
$yu=$y+1; //Cogmeos yu, la que pintara hacia arriba
$yd=$y-1; //Cogemos yd, la que pintara hacia abajo

//21
//Cogemos el color negro en hexadecimal y lo transformamos a decimal lo mismo hacemos con el color gris

$grishex="626262";
$negrehex=000000;
$grisdec=hexdec($grishex);
$negredec=hexdec($negrehex);
$coldec = ImageColorAt($imagen, $xr, $y);
//echo "$coldec";
//Miramos si el color del pixel lo tenemos que tratar como una mancha o como parte del cuerpo
if (($negredec <= $coldec) && ($coldec <= grisdec)) {
//31
//echo "fsdafdsa";
//Mientras no se salga de los limites de la imagen
while ($xr+1 < $w) {
//echo "$xr";
//Si el pixel es negro lo seguimos pintando de negro
if (($negredec <= ImageColorAt($imagen, $xr, $yu)) && (ImageColorAt($imagen, $xr, $yu) <= $grisdec)) {
//Pintamos la imagen de negro ya que es una mancha de la vaca
$negrehex1= "000000";
$negredec1=hexdec($negrehex1);
$negrehex2= "000000";
$negredec2=hexdec($negrehex2);
//41
$negrehex3="000000";
$negredec3=hexdec($negrehex3);

$color = ImageColorAllocate($imagen, $negredec1, $negredec2, $negredec3);
ImageSetPixel($imagen, $xr, $y, $color); //Pintamos el pixel

if($yu < $h) { //Si el punto de encima esta dentro de la imagen
if (($negredec <= ImageColorAt($imagen, $xr, $yu)) && (ImageColorAt($imagen, $xr, $yu) <= $grisdec)) { //Y es del mismo color
//Lo metemos dentro de la cola para colorearlo posteriormente
//51
$rastreo = array($xr,$yu);}
}

if($yd > 0) { //Realizamos las mismas operaciones pero por debajo
if (($negredec <= ImageColorAt($imagen, $xr, $yu)) && (ImageColorAt($imagen, $xr, $yu) <= $grisdec)) {
$rastreo = array($xr, $yd);}
}
}
//Aumentamos en uno hacia la derecha
++$xr;
//61
}

//Bucle identico al anterior lo unico que va hacia la izquierda de la imagen
while ($xl-1 >0) {
//Pasamos a decimal el color negro para poder pintar en rgb
//71 si el pixel sigue siguiente es negro seguimos pintando de negro
if (($negredec <= ImageColorAt($imagen, $xl, $yu)) && (ImageColorAt($imagen, $xl, $yu) <= $grisdec)) {
$negrehex4= "000000";
$negredec4= hexdec($negrehex4);
$negrehex5= "000000";
$negredec5=hexdec($negrehex5);
$negrehex6= "000000";
$negredec6=hexdec($negrehex6);
//Pintamos la imagen de negro ya que es una mancha de la vaca
$color = ImageColorAllocate($imagen, $negredec4, $negredec5, $negredec6);
ImageSetPixel($imagen, $xl, $y, $color);
//81

if($yu < $h) { //Si no nos salimos por la parte superior de la imagen
if (($negredec <= ImageColorAt($imagen, $xl, $yu)) && (ImageColorAt($imagen, $xl, $yu) <= $grisdec)) {
$rastreo[] = array($xl, $yu); }
}
if($yu > 0) { //Si no nos salimos por la parte de abajo de la imagen
if (($negredec <= ImageColorAt($imagen, $xl, $yu)) && (ImageColorAt($imagen, $xl, $yu) <= $grisdec)) {
$rastreo[] = array($xl, $yu); }
}
}
//91
--$xl;
}
}

//Si el color no se encuentra entre esos valores se trata de una parte del cuerpo de la vaca
else {

//Mientras no se salga de los limites de la imagen
while ($xr+1 < $w) {
//101
//Si el pixel sigue siendo blanco seguimos pintando de blanco
if (($negredec > ImageColorAt($imagen, $xr, $yu)) && (ImageColorAt($imagen, $xr, $yu) > $grisdec)) {
//Pasamos a decimal el color blanco para poder pintar en rgb
$blancohex1="FFFFFF";
$blancodec1=hexdec($blancohex1);
$blancohex2="FFFFFF";
$blancodec2=hexdec($blancohex2);
$blancohex3="FFFFFF";
$blancodec3=hexdec($blancohex3);
//Pintamos la imagen de blanco ya que es una parte del cuerpo

//111
$color = ImageColorAllocate($imagen, $blancodec1, $blancodec2, $blancodec3);
//echo "$color";
//echo "a";
//echo "$xr";
//echo "d";
//echo "$y";
ImageSetPixel($imagen, $xr, $y, $color); //Pintamos el pixel

if($yu < $h) { //Si el punto de encima esta dentro de la imagen
//echo "barça";
if (($negredec > ImageColorAt($imagen, $xr, $yu)) && (ImageColorAt($imagen, $xr, $yu) > $grisdec)) { //Y es del mismo color
//Lo metemos dentro de la cola para colorearlo posteriormente
$rastreo = array($xr,$yu);}
}

//121
if($yd > 0) { //Realizamos las mismas operaciones pero por debajo
if (($negredec > ImageColorAt($imagen, $xr, $yu)) && (ImageColorAt($imagen, $xr, $yu) > $grisdec)) {
$rastreo = array($xr, $yd);}
}
}
++$xr; //Aumentamos en uno hacia la derecha
//echo "$xr";
//echo "barça";
}



//131

//Bucle identico al anterior lo unico que va hacia la izquierda de la imagen
while ($xl-1 >0) {
if (($negredec > ImageColorAt($imagen, $xl, $yu)) && (ImageColorAt($imagen, $xl, $yu) > $grisdec)) {
//Pasamos a decimal el color blanco para poder pintar en rgb
$blancohex4="FFFFFF";
$blancodec4=hexdec($blancohex4);
$blancohex5="FFFFFF";
$blancodec5=hexdec($blancohex5);
$blancohex6="FFFFFF";
//141
$blancodec6=hexdec($blancohex);
$blancohex6=hexdec($blancodec);

//Pintamos la imagen de blanco ya que se trata de una parte del cuerpo
$color = ImageColorAllocate($imagen, $blancodec4, $blancodec5, $blancodec6);
ImageSetPixel($imagen, $xl, $y, $color);

if($yu < $h) { //Si no nos salimos por la parte superior de la imagen
if (($negredec > ImageColorAt($imagen, $xl, $yu)) && (ImageColorAt($imagen, $xl, $yu) > $grisdec)) {
//151
$rastreo[] = array($xl, $yu); }
}
if($yu > 0) { //Si no nos salimos por la parte de abajo de la imagen
if (($negredec > ImageColorAt($imagen, $xl, $yu)) && (ImageColorAt($imagen, $xl, $yu) > $grisdec)) {
$rastreo[] = array($xl, $yu); }
}
}
--$xl;
}

//161
}

}
return $imagen;
}


if ($imagen = ImageCreateFromJPEG("vaca1.jpg")) {
header('Content-Type: image/jpeg');
$a=pintar($imagen, 0, 0);
//header('Content-Type: image/jpeg');
ImageJPEG($a);
//172
}
else{
echo "No se ha encontrado la imagen";
}
?>