Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/04/2005, 15:57
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 21 años, 11 meses
Puntos: 34
Acabo de hacer este para un amigo...no lo he probado, pero poniendo en el source de la imagen el nombre del archivo y pasandole ancho, alto, calidad e imagen deberia regenerarla con el tamaño pasado.
Ejemplo, si guaras el file como imagen.php, y tenes una imagen llamada pipo.jpg, entonces harias así:

<img src="imagen.php?imagen=pipo.jpg&ancho=100">
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);
}

?>
PD: Los parametros son opcionales, revisa el codigo;)
__________________
Mi punto de partida es Que Bueno Lo Nuevo