Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2012, 19:18
Avatar de iBioHacker
iBioHacker
 
Fecha de Ingreso: diciembre-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 1
Información Problemas con la función imagecreatefromjpeg()

Hola, mi problema con esta funcion sucede cuando a una imagen PNG le cambio la extension a JPG (manualmente) y la subo (en local) para generar un thumbnail. La función no me arroja error de algun tipo.

En Firefox me sale: La conexión ha sido reiniciada La conexión al servidor fue reiniciada mientras la página se cargaba.

En internet explorer: Internet Explorer no puede mostrar la página web Puede intentar lo siguiente...

Asi comienzo a crear el objeto para manipular la imagen
Código PHP:
if($ext==='jpeg' || $ext==='jpg'){
$imagen=imagecreatefromjpeg($foto_ruta);
                                
}else if(
$ext==='png'){
$imagen=imagecreatefrompng($foto_ruta);

No entiendo por que falla, el codigo completo realizaria lo siguiente:
1. Subo la imagen y creo la ruta
[La sube correctamente y obtengo la ruta]


2.Valido el mime type del archivo. Lo que no me gusta de $_FILES[$archivo]['type'] es que si tomo un "*.EXE" y lo renombro como "*.JPG", la mugre funcion me dice que en efecto es JPG , cuando lo abro con el block de notas puedo ver claramente el MIME al inicio del archivo y claramente es un EXE
[AUN ASI "VALIDA" EL MIME TYPE ]

3. Creo el objeto
4. Creo el contenedor
5. Creo el thumbnail
6. Guardo la imagen

Nada del otro mundo funciona correctamente con cualquier imagen, pero si me atrevo a renombrar cualquier archivo y hacerlo pasar como imagen es cuando NO PUEDO GESTIONAR EL FALLLO ya ni con: if(!imagen){}, por que ni la pantalla en blanco me sale, solo me dice fallo conexion y ya.

Alguien puede decir que puede ser.

Código PHP:
ini_set('memory_limit','100M');
if(
move_uploaded_file($_FILES['foto']['tmp_name'],$foto_ruta)){
    
$x=$_POST['x'];
    
$y=$_POST['y'];
    
$w=$_POST['w'];
    
$h=$_POST['h'];

    
$width=$height=100;
    
$quality=99;

       
#Crear imagen
    
if($ext==='jpeg' || $ext==='jpg'){
        
$imagen=imagecreatefromjpeg($foto_ruta)or die('error jpg');
                                
    }else if(
$ext==='png'){
        
$imagen=imagecreatefrompng($foto_ruta)or die('error png');
    }
                            
    if(!
$imagen){
              
$_SESSION['MENSAJE']=Response('warning','Error: La imagen es un tipo no válido');
        echo 
'FALLO';
    }
    
#Genera un contenedor de un ancho y alto especifico
    
if(function_exists("imagecreatetruecolor")){
        
$thumb=imagecreatetruecolor($width,$height);

    }else{
        
$thumb=imagecreate($w,$h);
    }

                            
imagecopyresampled($thumb,$imagen,0,0,$x,$y,$width,$height,$w,$h);
    
$ruta_thumbnail=($directorio.'/'.$folder.'/'.'Perfil_thumbnail.jpg');
                            
    
imagejpeg($thumb,$ruta_thumbnail,$quality);
    
imagedestroy($imagen);
                            
            

                        
            
}else{
    
$_SESSION['MENSAJE']=Response('warning','La imagen no pudo ser subida al servidor');