Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/05/2005, 02:44
lochino006
 
Fecha de Ingreso: abril-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 0
Este es el codigo que tengo pero el problema que tengo es que no me lanza la funcion y no entra en la funcion pintar para poder transformar la imagen a blanco y negro. Haber si me puedes ayudar porque lo he de tener hecho para hoy y no hay manera de resolverlo. Gracias!!!!!

Código PHP:
<?
//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+$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->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";
            
$negredec4hexdec($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+$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->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($imagen00);
//header('Content-Type: image/jpeg');
ImageJPEG($a);
//172
}
else{
echo 
"No se ha encontrado la imagen";
}
?>

Última edición por Cluster; 25/05/2005 a las 08:57