$ancho_destino=$_GET["ancho_max"]; // Ancho máximo de la nueva imagen (thumbnail)
$alto_destino=$_GET["alto_max"]; // Alto máximo de la nueva imagen (thumbnail)
$imagen=$_GET["imagen"]; // nombre de la imagen
$original = imagecreatefrompng($imagen); //Abrir la imagen original
header("Content-type: image/png");
//Ahora necesitamos saber de que tamaño es la imagen original:
$ancho_original = imagesx($original);
$alto_original = imagesy($original);
if (($ancho_original <= $ancho_destino) && ($alto_original <= $alto_destino))
{
imagepng($original);
}else{
$alto_redimensionado = $ancho_destino * $alto_original / $ancho_original; // Que el alto sea proporcional al ancho elegido
$ancho_redimensionado = $alto_destino * $ancho_original / $alto_original; // Que el ancho sea proporcional al alto elegido
if ($alto_redimensionado <= $alto_destino)
{
// REDIMENSIONAR POR EL ALTO
//Crear una imagen nueva (miniatura)
$thumb = imagecreatetruecolor($ancho_destino,$alto_redimensionado);
//A continuación vamos a copiar la imagen original en la imagen en miniatura:
imagecopyresampled($thumb,$original,0,0,0,0,$ancho_destino,$alto_redimensionado,$ancho_original,$alto_original);
}else{
// REDIMENSIONAR POR EL ANCHO
//Crear una imagen nueva (miniatura)
$thumb = imagecreatetruecolor($ancho_redimensionado,$alto_destino);
//A continuación vamos a copiar la imagen original en la imagen en miniatura:
imagecopyresampled($thumb,$original,0,0,0,0,$ancho_redimensionado,$alto_destino,$ancho_original,$alto_original);
}
imagepng($thumb); //Por último, guardamos la imagen
// Liberar memoria (destruir las imagenes creadas con imagecreateXXX)
imagedestroy($original);
imagedestroy($thumb);
}