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');
}