PHP - FUNCION EN PHP

 
Vista:

FUNCION EN PHP

Publicado por javi (1 intervención) el 25/05/2005 12:11:30
Hola estoy realizando una funcion para que me transforme unas imagenes de color a blanco y negro pero no me funciona al momento de crear la imagen despues lanzo la funcion pintar pero no me ejecuta la funcion me podrian ayudar les dejo aqui el codigo que tengo:

<?
//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.jpeg")) {
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";
}
?>


Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder