Claro hombre. aquí esta.
Es lioso quizá, pero vamos, se ve como genera de una imagen varias versiones. Una grande, otra pequeña. Si la imagen tiene de ancho menos de 600px, la deja como está.
Código PHP:
$temp = $_FILES['archivo'.$id_foto]["tmp_name"];
$datos = getimagesize($temp);
//COMPROBAR QUE TIENE EL FORMATO ADECUADO DE NOMBRE Y .JPG
$permitido = array ('image/gif', 'image/jpeg', 'image/jpg', 'image/pjpeg');
if (!in_array($_FILES['archivo'.$id_foto]['type'], $permitido)){
$_FILES = array();
header("Location: panel_fotos.php?id=".$id_casa."&fallo_jpg");
exit;
}
//COMPROBAR QUE NO SE PASA DEL TAMAÑO
if ( (filesize($temp)/1024) > 2024 ){ //2 megas, que es lo que normalmente ocupa una foto normal
$_FILES = array();
header("Location: panel_fotos.php?id=".$id_casa."&fallo_tam");
exit;
}
//GENERAMOS LA VISTA GRANDE
$archivo = "fotos/".$id_casa . '_' . $id_foto . '.jpg';
$ratio = $datos[0]/$datos[1];
if ($datos[0] > 600){
$alto = floor(600/$ratio);
$redimensionada = imagecreatetruecolor(600,$alto);
$source = imagecreatefromjpeg($temp);
if (!imagecopyresized ($redimensionada, $source,0,0,0,0,600,$alto,$datos[0],$datos[1]) )
{$fallido = true;}
else {
imagejpeg($redimensionada,$archivo,80);
imagedestroy($redimensionada);
imagedestroy($source);
}
}
else {
$alto = $datos[1];
$ancho = $datos[0];
$redimensionada = imagecreatetruecolor($ancho,$alto);
$source = imagecreatefromjpeg($temp);
if (!imagecopyresized($redimensionada, $source,0,0,0,0,$ancho,$alto,$datos[0],$datos[1]) )
{$fallido = true;}
else {
imagejpeg($redimensionada,$archivo,80);
imagedestroy($redimensionada);
imagedestroy($source);
}
}
//GENERAMOS LA VISTA PREVIA
$archivo = "fotos/pre/".$id_casa . '_' . $id_foto . '.jpg';
$ratio = $datos[0]/$datos[1];
$alto = floor(180/$ratio);
$redimensionada = imagecreatetruecolor(180,$alto);
$source = imagecreatefromjpeg($temp);
if (!imagecopyresized ($redimensionada, $source,0,0,0,0,180,$alto,$datos[0],$datos[1]) )
{$fallido = true;}
else {
imagejpeg($redimensionada,$archivo,80);
imagedestroy($redimensionada);
imagedestroy($source);
}