Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/12/2009, 11:56
Avatar de jackson666
jackson666
 
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: ¿Es posible comprimir las imagenes al vuelo?

Toda tuya
Código PHP:
<?php

#################################### clase crear imagenes #######################################
class createImg{
    var 
$imagen;//nombre de la imagen cargada
    
var $ext;//extension nueva imagen cargada
    
    
var $ancho;//ancho de nueva imagen (metodo escala)
    
var $alto;//alto de nueva imagen (metodo escala)
    
    
function __construct($ruta){
        if(
file_exists($ruta)){
        
$this->imagen=$ruta;
    }else{
        echo 
"Ruta de Imagen Incorrecta";
    }
    }
    
    function 
resizeImg($newName,$width,$height){
        
        
$tamanio=getimagesize($this->imagen);
        
$this->ancho=$tamanio[0];
        
$this->alto=$tamanio[1];
                    
        
$imagenRedim=imagecreatetruecolor($width,$height);      
       
        list(
$nombre,$extension)=explode(".",$this->imagen);
        
$this->ext=$extension;
        
        if(empty(
$newName)){
            
$newName=$nombre;
        }        
        
        echo 
"<br /><b>Nombre de la Imagen Original:</b> ".$this->imagen."<br /><br />";
        echo 
"<b>Nombre de la Imagen Transformada:</b> ".$newName.".".$this->ext."<br /><br />";
        
        echo 
"<u>Tamaño de la Imagen Original:</u><br />Ancho--> ".$tamano[0]."<br />Alto---> ".$tamano[1]."<br /><br />";
        echo 
"<u>Tamaño de la Imagen Transformada:</u><br />Ancho--> ".$width."<br />Alto---> ".$height."<br /><br />";
       
        if(
strtolower($this->ext)=="jpg" or strtolower($this->ext)=="jpeg"){
            
$crear=imagecreatefromjpeg($this->imagen);
            
imagecopyresampled($imagenRedim,$crear,0,0,0,0,$width,$height,$this->ancho,$this->alto);
            
imagejpeg($imagenRedim,$newName.".jpg",100);
            echo 
"Formato---> jpg<br />";
            
imagedestroy($crear);
       
        }else if(
strtolower($this->ext)=="png"){
            echo 
"Formato---> png<br />";
            
$crear=imagecreatefrompng($this->imagen);
            
imagecopyresampled($imagenRedim,$crear,0,0,0,0,$width,$height,$this->ancho,$this->alto);
            
imagepng($imagenRedim,$newName.".png");
            
imagedestroy($crear);
                
        }else if(
strtolower($this->ext)=="gif"){
            echo 
"Formato---> gif<br />";
            
$crear=imagecreatefromgif($this->imagen);
            
imagecopyresampled($imagenRedim,$crear,0,0,0,0,$width,$height,$this->ancho,$this->alto);
            
imagegif($imagenRedim,$newName.".gif");
            
imagedestroy($crear);
        
        }else{
            echo 
"<b><font color='red'>El nombre o extension de la imagen es Incorrecto</font></b>";
        }
       
    }
//----------------------------------> fin metodo de redimension
    
   
   
    
function scaleImg($newName,$percent){
        
        
#Esta funcion mantiene la relacion de aspecto o sea, da un multiplo del area de la imagen original
        
       #echo "<br /><b>Nombre de Imagen:</b> ".$this->imagen."<br />";
        
        
$tamanio=getimagesize($this->imagen);
        
$this->ancho=$tamanio[0];
        
$this->alto=$tamanio[1];
        
        
#Redimension
        
$finalWidth=$this->ancho*$percent;
        
$finalHeight=$this->alto*$percent;
        
        
$imgEscalada=imagecreatetruecolor($finalWidth,$finalHeight);
               
        list(
$noSirve,$sirve)=explode(".",$this->imagen);
        
$this->ext=$sirve;        
       
        if(
strtolower($this->ext)=="jpg" or strtolower($this->ext)=="jpeg"){
            
#echo "Formato---> jpg<br />";
            
$crear=imagecreatefromjpeg($this->imagen);
            
imagecopyresampled($imgEscalada,$crear,0,0,0,0,$finalWidth,$finalHeight,$this->ancho,$this->alto);
            
imagejpeg($imgEscalada,$newName.".jpg",100);
                  
        }else if(
strtolower($this->ext)=="png"){
            
#echo "Formato---> png<br />";
            
$crear=imagecreatefrompng($this->imagen);
            
imagecopyresampled($imgEscalada,$crear,0,0,0,0,$finalWidth,$finalHeight,$this->ancho,$this->alto);
            
imagepng($imgEscalada,$newName.".png");
       
        }else if(
strtolower($this->ext)=="gif"){
            
#echo "Formato---> gif<br />";
            
$crear=imagecreatefromgif($this->imagen);
            
imagecopyresampled($imgEscalada,$crear,0,0,0,0,$finalWidth,$finalHeight,$this->ancho,$this->alto);
            
imagegif($imgEscalada,$newName.".gif");
        }
        
    }
//-----------------------> fin metodo scaleImg
    
    
function __destruct(){
        echo 
"<br /><b>Fin de Transformaciones</b><br />";        
    }
}
//###########################################################################> fin class crearImg
?>
Te deje los 2 metodos el de redimension y el de escala...

Y aca va un ejempo de uso:

Código PHP:

<?php
#__classes.php es el archivo de arriba
include("__classes.php");
$imagen=new createImg("[ruta de la imagen con extension y todo]");
$imagen->scaleImg("[nuevo nombre de la imagen]",[factor de escala]);
?>
PD: gracias por el karma =P

Última edición por jackson666; 08/12/2009 a las 12:04