No se que tiene que ver nl2br.
Fijate si este se ajusta a lo que buscas:
Código PHP:
<?
$maximoPx = 1000;
$imagen = isset( $_GET["imagen"]) ? $_GET["imagen"] : '';
$ancho = isset( $_GET["ancho"]) ? ( intval( $_GET["ancho"] ) < $maximoPx ) ? intval( $_GET["ancho"] ) : 0 : 0;
$alto = isset( $_GET["alto"]) ? ( intval( $_GET["alto"] ) < $maximoPx ) ? intval( $_GET["alto"] ) : 0 : 0;
$calidad = isset( $_GET["calidad"] ) ? ( intval( $_GET["calidad"] ) < 100 ) ? intval( $_GET["calidad"] ) : 60 : 60;
if( strlen( $imagen ) > 5 ){
$extension = strtolower( substr( strrchr( $imagen, "." ), 1 ) );
$extensionJpg = array( 'jpg', 'jpeg' );
$extensionGif = array( 'gif', 'png' );
if( in_array( $extension, $extensionJpg ) ):
$imgSource = imagecreatefromjpeg( $imagen );
elseif( in_array( $extension, $extensionGif ) ):
$imgSource = imagecreatefromgif( $imagen );
else:
header( "Location: $imagen" );
exit;
endif;
$anchoOriginal = imagesx( $imgSource );
$altoOriginal = imagesy( $imgSource );
if( $alto===0 ):
$alto = ( $ancho / $anchoOriginal ) * $altoOriginal;
if( $alto===0 ):
$alto = 1;
endif;
endif;
if( $ancho===0 ):
$ancho = ( $alto / $altoOriginal ) * $anchoOriginal;
if( $ancho===0 ):
$ancho = 1;
endif;
endif;
#Para GD 2.0.1 o mayor
$imgDestino = imagecreatetruecolor( $ancho, $alto );
imagecopyresampled( $imgDestino, $imgSource, 0, 0, 0, 0, $ancho, $alto, $anchoOriginal, $altoOriginal);
#Para versiones anteriores a GD 2.0.1
#$imgDestino = imagecreate($ancho,$alto);
#imagecopyresized($imgDestino, $imgSource, 0, 0, 0, 0, $ancho, $alto, $anchoOriginal, $altoOriginal);
header( "Content-type: image/jpeg" );
imagejpeg( $imgDestino,'', $calidad );
imagedestroy( $imgSource );
imagedestroy( $imgDestino );
}
?>
Le faltan unas cosas en cuanto a validaciones, sobre todo con el tema del tipo de imagen, pero funciona en la mayoría de los casos.
este file lo pones en el root, por ejemplo, bajo el nombre de __imagen.php, y luego en donde quieras poner una imagen redimensionada haces:
<img src="__imagen.php?imagen=images/algun.jpg&ancho=80" />
Ojo, este proceso para mi es mejor hacerlo al guardar la imagen, a no ser que no tengas acceso a eso.