Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/10/2007, 13:43
chaluba
 
Fecha de Ingreso: enero-2005
Mensajes: 102
Antigüedad: 19 años, 3 meses
Puntos: 0
Upload de imágenes que funciona a medias

Muy buenas. Hace tiempo que utilicé este código para subir imágenes al server (lo encontré aquí en forosdelweb), y funcionaba bien, o al menos eso parecía. El caso es que ahora he descubierto un error que me está quebrando la quijotera. Las imágenes suben, pero al parecer siempre y cuando tengan una resolución menor de 1414x1061 píxeles. Es decir, probando he creado con photoshop una foto de 800x600 píxeles. La sube perfectamente.

He ido probando cambiando resoluciones y por ejemplo, a 1413x1060 sube perfectamente, pero a un píxel más ancho/alto, 1414x1061 ya da un error, y la página se carga a medias. De repente se corta el código y se queda una tabla a medias, incluso antes de llegar al código PHP.

¿Es raro de coj****, o no? Yo ya he probado de todo o casi todo y no logro dar con el error. Posteo el código para ver si algún alma caritativa me echa una manita y salgo adelante.

Código PHP:
$nombrefoto="1";
$dir="casas/".$nombrefoto."/";
$anchura=336;//Para foto grande
$altura=252;
$anchura_thumb=108;//Para foto pequeña
$altura_thumb=81;
$pos="L-T";
$c1=50;//Calidades
$c2=50;

$name=$_FILES["archivo"]['name']; 
$type=$_FILES["archivo"]['type']; 
$tamano=$_FILES["archivo"]['size'];
$image_name $name;
            
$extension "jpg";
            
$image_name=$nombrefoto.".".$extension;
                
if (
$type<>"image/pjpeg"){
    
$resultadoupload="El archivo seleccionado no es una imagen de tipo jpeg.";
}else{
    if (
$tamano<=2000000){
        
//Imagen original en el servidor 
        
$temp=$_FILES["archivo"]['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");  
        }
                    
        
//INICIA PROCESO 
        
$dimensiones getimagesize($temp); //Dimensiones originales de la imagen 
        
if ($dimensiones[0]>=350){//Si la imagen es mayor o igual a 350 píxeles de ancho
            
if ($dimensiones[1]>=$dimensiones[0]/2){//Si el alto es mayor o igual al ancho entre 2
                
if ($dimensiones[1]<$dimensiones[0]){//Si el alto es menor que el ancho (si no es vertical)
        
                    
$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
                    
fopen($dir.$image_name,'w+');
                    
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" 
                                
                    
$image_name2=$image_name;
                                                
                    
//Ahora voy con la imagen pequeña
                                
                    
$image_name=$nombrefoto2.".".$extension;
                                
                    
//Imagen original en el servidor 
                    
$temp=$_FILES["archivo"]['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");  
                    }
                                
                    
//INICIA PROCESO 
                    
$dimensiones getimagesize($temp); //Dimensiones originales de la imagen 
                    
$image imagecreatetruecolor($anchura_thumb,$altura_thumb); //crea la nueva imagen 
                    
$FFF imagecolorallocate($img255,255,255); 
                    
imagefill($image00$FFF); 
                    
imagecopyresampled ($image$img0000$anchura_thumb$altura_thumb$dimensiones[0], $dimensiones[1]);//reescala
                    
fopen($dir.$image_name,'w+');
                    
imagejpeg($image,"$dir$image_name"$c2);//mueve la imagen al server (el segundo parámetro es la calidad) 
                    
imagedestroy($image); //destruye image 
                    
imagedestroy($img); //destruye la imagen "origen"
                                
                    
$unique time(); 
                                
                    
$resultadoupload="La imagen se ha subido correctamente.";
                }else{
                    
$resultadoupload="No se admiten las imágenes verticales.";
                }
            }else{
                
$resultadoupload="El alto de la imagen es inferior a la mitad del ancho, por lo que no guarda relación de aspecto";
            }
        }else{
            
$resultadoupload="El ancho de la imagen es menor de 350 píxeles.";
        }
    }else{
        
$resultadoupload="El tamaño de la imagen supera el límite permitido (2MB)";
    }

__________________
Selección de noticias RSS:
Motor - Negocios - Hoteles