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: 19 años, 5 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;
$alto = isset($_GET["alto"]) ? (intval($_GET["alto"])<$maximoPx) ? intval($_GET["alto"]) : 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$imgSource0000$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