Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2010, 09:52
Avatar de jpvilar
jpvilar
 
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 1
Upload de imágenes en negro en FF y Chrome

Hola, tengo un script en php que cuando subo una imagen al servidor la resamplea (además de embeberle un watermak) que uso habitualmente pero me encontré con el problema que al cargar la imagen desde FF o Chrome la imagen creada es negra, no sucede lo mismo en IE.

El proceso de subida de la imagen y del thumbnail lo hace perfecto, simplemente cuando subo desde IE no hay drama pero desde otros navegadores me crea en el servidor una imagen totalmente negra.

Pego el script a ver si alguien me da una mano y me explica porqué hace esto, yo siempre supuse que al correr la aplicación en el servidor es independiente del navegador usado pero por algún raro motivo no puedo subir imágenes desde estos dos navegadores (no probé en otros, normalmente trabajo para IE y testeo en FF y Chrome)

Gracias desde ya
Código PHP:
// RESAMPLEO DE IMAGEN
################################################################################################## 
$campo $_FILES["imagen"];

//function imgResample2 ($imagen, $dir="../../images/albumes/", $anchura, $anchura_thumb, $watermark="", $watermark_thumb="", $pos="L-T", $wmdist=0, $c1=95, $c2=97){ 
$dir="../images/user-imagenes/";
$watermark="../images/logo-watermark.png";
$watermark_thumb="";
$pos="R-T";
$wmdist=5;
$c1=95;
$c2=97;
$anchura 500;
$anchura_thumb 200;
$dir_bd "images/user-imagenes";
$unique time();
    if(
$_FILES["imagen"]['name']!=''){ 
     
    
//Si el campo está lleno, es decir, si se subió una foto... 

        //crea los directorios necesarios 
        
if($dir!=""){ 
            if(!
file_exists($dir)) mkdir($dir); 
        } 
        
//asigna las variables         
        
$name=$_FILES["imagen"]['name']; 
        
$type=$_FILES["imagen"]['type']; 
        
$image_name $unique.".jpg"
         
        
//Imagen original en el servidor 
        
$temp=$_FILES["imagen"]['tmp_name'];  
         
        
//Objeto con el que trabajará el programa 
        
if($type=="image/pjpeg"){ 
            
$img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");  
        } 
        if(
$_FILES["imagen"]['type']=="image/gif"){ 
            
$img = @imagecreatefromgif($temp) or die("No se encuentra la imagen $image_name<br>\n"); 
            
$image_name str_replace(".gif"".jpg"$image_name); 
        } 
        if(
$_FILES["imagen"]['type']=="image/x-png"){ 
            
$img = @imagecreatefrompng($temp) or die("No se encuentra la imagen $image_name<br>\n"); 
            
$image_name str_replace(".png"".jpg"$image_name); 
        } 
        
//Para que acepte la transparencia del PNG 
        
imagealphablending($imgtrue); 
        
//INICIA PROCESO 
            
$dimensiones getimagesize($temp); //Dimensiones originales de la imagen 
            
$ratio = ($dimensiones[0] / $anchura); 
            
$altura round($dimensiones[1] / $ratio); 
            
$image imagecreatetruecolor($anchura,$altura); //crea la nueva imagen 
            
$FFF imagecolorallocate($img255,255,255); 
            
imagefill($image00$FFF); 
            
imagecopyresampled ($image$img0000$anchura$altura$dimensiones[0], $dimensiones[1]);//reescala 
             
            //INICIA WATERMARK 
            //posición horizontal y vertical del watermark: 
            
$pos explode("-",$pos); 
            
$wmhorz=$pos[0]; 
            
$wmvert=$pos[1]; 
         
            if(
$watermark != ''){ 
                
$logo imagecreatefrompng($watermark); 
                
$margen $wmdist//distancia entre el watermark y la orilla 
                
$logoW =imagesx($logo); //Anchura del logo 
                
$logoH =imagesy($logo); //Altura del logo 
                
switch ($wmhorz){ 
                    case 
"L"
                        
$xpos=$margen
                        break; 
//end L 
                    
case "R"
                        
$xpos=$anchura-$logoW-$margen//posición en x del wm 
                        
break; //end R 
                
//end switch hotz 
                
switch ($wmvert){ 
                    case 
"T"
                        
$ypos=$margen;  
                        break; 
//end T 
                    
case "B"
                        
$ypos=$altura-$logoH-$margen//posición en y del wm 
                        
break; //end B 
                
//end switch vert 
                
imagecopy($image$logo$xpos$ypos00$logoW$logoH); //Pone el logo 
                
imagedestroy($logo); //destruye el logo después de usarlo 
            

            
//TERMINA WATERMARK 
            
imagejpeg($image,"$dir$image_name"$c1);//mueve la imagen al server (el segundo parámetro es la calidad) 
            
imagedestroy($image); //destruye image 
            
imagedestroy($img); //destruye la imagen "origen" 
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
        //TERMINA IMAGEN 
         
        //INICIA THUMBNAIL 
        
if($anchura_thumb != || $anchura_thumb == $anchura || $anchura_thumb == "" || $anchura_thumb == NULL) { 
            
//crea los directorios necesarios 
            
$subdir "thumb"
            if(
$dir!=""){ 
                if(!
file_exists($dir.$subdir)) mkdir($dir.$subdir); 
            } else { 
                if(!
file_exists($subdir)) mkdir($subdir); 
            } 
            
//asigna las variables         
            
$name=$_FILES["imagen"]['name']; 
            
$type=$_FILES["imagen"]['type']; 
            
$thumb_name $subdir."/thumb_".$unique.".jpg"
             
            
//Imagen original en el servidor 
            
$temp=$_FILES["imagen"]['tmp_name'];  
             
            
//Objeto con el que trabajará el programa 
            
if($type=="image/pjpeg"){ 
                
$img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");  
            } 
            if(
$_FILES["imagen"]['type']=="image/gif"){ 
                
$img = @imagecreatefromgif($temp) or die("No se encuentra la imagen $image_name<br>\n"); 
                
$thumb_name str_replace(".gif"".jpg"$thumb_name); 
            } 
            if(
$_FILES["imagen"]['type']=="image/x-png"){ 
                
$img = @imagecreatefrompng($temp) or die("No se encuentra la imagen $image_name<br>\n"); 
                
$thumb_name str_replace(".png"".jpg"$thumb_name); 
            } 
            
//Para que acepte la transparencia del PNG 
            
imagealphablending($imgtrue); 
            
//INICIA PROCESO 
                
$dimensiones getimagesize($temp); //Dimensiones originales de la imagen 
                
$ratio_thumb = ($dimensiones[0] / $anchura_thumb); 
                
$altura_thumb round($dimensiones[1] / $ratio_thumb); 
                
$thumb imagecreatetruecolor($anchura_thumb,$altura_thumb); //crea la nueva imagen 
                
$FFF imagecolorallocate($img255,255,255); 
                
imagefill($thumb00$FFF); 
                
imagecopyresampled ($thumb$img0000$anchura_thumb$altura_thumb$dimensiones[0], $dimensiones[1]);//reescala el thumbnail 
                //INICIA WATERMARK THUMB 
                
if($watermark_thumb != ''){ 
                    
$logo_thumb imagecreatefrompng($watermark_thumb); 
                    
$margen $wmdist//distancia entre el watermark y la orilla 
                    
$logoW_thumb =imagesx($logo_thumb); //Anchura del logo 
                    
$logoH_thumb =imagesy($logo_thumb); //Altura del logo 
                    
switch ($wmhorz){ 
                        case 
"L"
                            
$xposThumb=$margen/2
                            break; 
//end L 
                        
case "R"
                            
$xposThumb=$anchura_thumb-$logoW_thumb-($margen/2); //posición en x del wm 
                            
break; //end R 
                    
//end switch hotz 
                    
switch ($wmvert){ 
                        case 
"T"
                            
$yposThumb=$margen/2
                            break; 
//end T 
                        
case "B"
                            
$yposThumb=$altura_thumb-$logoH_thumb-($margen/2); //posición en y del wm 
                            
break; //end B 
                    
//end switch vert 
                    
imagecopy($thumb$logo_thumb$xposThumb$yposThumb00$logoW_thumb$logoH_thumb); //Pone el logo 
                    
imagedestroy($logo_thumb); //destruye el logo después de usarlo 
                

                
//TERMINA WATERMARK THUMB 
                
imagejpeg($thumb,"$dir$thumb_name"$c2);//mueve la imagen al server (el segundo parámetro es la calidad) 
                
imagedestroy($thumb); //destruye thumb 
                
imagedestroy($img); //destruye la imagen "origen" 
                 
            
} else { 
             
                
$thumb_name $unique."_".$image_name
             
            } 
// end if != 0 
             
        //TERMINA THUMBNAIL 
    

__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE