Código PHP:
<?php
////////////////////////////////////////////////////////
//
// Devuelve un array $array['ancho'], $array['alto']
// con el nuevo ancho y alto que deberá tener una
// imagen $i para adaptarse a $a.
//
// Si el ancho o el alto de la imagen original es
// menor a $a devuelve los valores de la imagen original
// para no reducir o ampliar la imagen perdiendo calidad.
//
// Si la imagen tiene más altura que anchura, las
// dimensiones devueltas se adaptan a la anchura,
// y viceversa.
//
// Esto se hace para que, si por ejemplo la imagen tiene
// 2000 de ancho por 300 de alto, la imagen se adapte a
// la altura (300).
//
// Si se adaptara a la medida mayor (2000), la altura quedaría
// microscópica xDD ya que 2000 se reduciría a $a (supongamos que $a==150),
// lo que causaría una reducción del 10% en anchura y altura.
// Los resultados finales de esta reducción quedarían en
// 200 de anchura y 38,25 de altura (casi nada xDDD).
//
//
function redimensionar($i,$a)
{
list($ancho, $alto, $tipo, $cadena) = getimagesize($i);
if(($ancho>$a)&&($alto>$a))
{
if($ancho>$alto)
{
$p = $a/$alto;
}
else
{
$p = $a/$ancho;
}
}
else
{
$p = 1;
}
$export = array();
$export['ancho'] = $ancho * $p;
$export['alto'] = $alto * $p;
return $export;
}
////////////////////////////////////
//
// Método de llamada
//
// ruta relativa de la imagen
$img = 'wallpaper.jpg';
// llamada a la función, de modo que las medidas de $img se adapten a 200
$medidas = redimensionar($img,200);
echo '<img src="'.$img.'" height="'.$medidas['alto'].'px" width="'.$medidas['ancho'].'px" />';
?>
Saludos;