Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/02/2006, 09:16
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 21 años, 10 meses
Puntos: 34
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.
__________________
Mi punto de partida es Que Bueno Lo Nuevo