Hola,
bien creo q deberia qdar asi, no lo probe mucho pero debe funcionar:
Código PHP:
<?php
//Si no se ha especificado el archivo
if(empty($_GET['archivo'])) {
echo 'No se especifico la ruta';
exit;
}
//Si no se ha especificado el archivo
if(empty($_GET['alto'])) {
echo 'No se especifico el nuevo alto de la imagen';
exit;
}
//Si no se ha especificado el archivo
if(empty($_GET['ancho'])) {
echo 'No se especifico el nuevo ancho de la imagen';
exit;
}
$archivo = $_GET['archivo'];
//Averiguamos la extension del archivo, porque de eso van a depender las funciones a usar
$extension = pathinfo($archivo);
$extension = $extension['extension'];
//Escoger la funcion. Usamos la funcion switch
switch($extension) {
case 'jpg':
$f1 = "imagecreatefromjpeg";
$f2 = "imageJpeg";
$type = "jpeg";
break;
case 'gif':
$f1 = "imagecreatefromgif";
$f2 = "imageGif";
$type = "gif";
break;
case 'png':
$f1 = "imagecreatefrompng";
$f2 = "imagePng";
$type = "png";
break;
default:
echo 'Error, tipo desconocido de archivo: '.$extension;
exit;
}
$img_fuente = @$f1($archivo);
//Dimensiones
$img_ancho= imagesx($img_fuente);
$img_alto =imagesy($img_fuente);
$ancho = $_GET['ancho'];
$alto = $_GET['alto'];
$diferencia_ancho = $img_ancho/$ancho;
$diferencia_alto = $img_alto/$alto;
if($diferencia_ancho > $diferencia_alto) {
$nuevo_ancho = $ancho;
$prop = $nuevo_ancho/$img_ancho;
$nuevo_alto = round($img_alto*$prop);
} else {
$nuevo_alto = $alto;
$prop = $nuevo_alto/$img_alto;
$nuevo_ancho = round($img_ancho*$prop);
}
$imagen = imagecreate($nuevo_ancho, $nuevo_alto);
imagecopyresized($imagen, $img_fuente, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $img_ancho, $img_alto);
Header("Content-type: image/$type");
$f2($imagen);
?>
Pruebalo y me comentas
Salu2