Tema: Portal posts
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/01/2011, 11:12
Avatar de memoadian
memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Portal posts

Bueno yo creo las imagenes con esta clase mira

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Creación de thumbnails ( creación de imágenes en miniatura )
  4.  *
  5. */
  6. class Imagenes
  7. {
  8.     //Propiedades de la clase
  9.     private $_imagen;
  10.     private $_formato = 'jpg';
  11.     private $_nuevaImagen;
  12.     private $_compresion = 90;
  13.     private $_nombre;
  14.  
  15.     /**
  16.      * Verificar si la libreria GD esta instalada.
  17.      */
  18.     public function __construct()
  19.     {      
  20.         $gd=gd_info();
  21.  
  22.         foreach ($gd as $key => $valor)
  23.         {
  24.             if(!$valor) {
  25.                 return 'La libreria GD no esta disponible.';
  26.             }
  27.         }
  28.     }
  29.  
  30.     /**
  31.      * Indicar a la clase con que imagen vamos a trabajar, es decir, a que
  32.      * imagen le vamos a crear un thumbnails.
  33.      */
  34.     public function setImagen($urlImagen)
  35.     {
  36.         $this->_imagen = $urlImagen;
  37.     }
  38.  
  39.     /*
  40.      * Indicar el formato de que tiene la imagen. La indicada en el
  41.      * método "setImagen".
  42.      */
  43.     public function setFormato($ext)
  44.     {
  45.         switch($ext)
  46.         {              
  47.             case "jpeg":
  48.                 $this->_imagen = imagecreatefromjpeg($this->_imagen);
  49.                 $this->_formato = $ext;
  50.                 break;
  51.  
  52.             case "jpg":
  53.                 $this->_imagen = imagecreatefromjpeg($this->_imagen);
  54.                 $this->_formato = $ext;
  55.                 break;
  56.  
  57.             case "png":
  58.                 $this->_imagen = imagecreatefrompng($this->_imagen);
  59.                 $this->_formato = $ext;
  60.                 break;
  61.  
  62.             default : return "Formato de imagen NO soportado.[jpeg|jpg|png]";
  63.         }      
  64.     }  
  65.  
  66.     /**
  67.      * Obtener el ancho (width) de la imagen.
  68.      */
  69.     public function getImagenX()
  70.     {
  71.         return imagesx($this->_imagen);
  72.     }
  73.  
  74.     /**
  75.      * Obtener el alto (height) de la imagen.
  76.      */
  77.     public function getImagenY()
  78.     {
  79.         return imagesy($this->_imagen);
  80.     }
  81.  
  82.     /**
  83.      * Nivel de compresión de la nueva imagen.
  84.      * Máximo 100.
  85.      * Cuanto mayor sea este valor mejor sera la calidad,
  86.      * pero tambien aumentara el tamaño.
  87.      */
  88.     public function setCompresion($compresion)
  89.     {
  90.         $this->_compresion = $compresion;
  91.     }
  92.  
  93.     /**
  94.      * Idicar nombre y ruta para la nueva imagen.
  95.      */
  96.     public function setNombre($nombre)
  97.     {
  98.         $this->_nombre = $nombre;
  99.     }
  100.  
  101.     /**
  102.      * Redimensionar imagen.
  103.      * Este método recibe el ancho (x) y el alto (y) que tendra
  104.      * la nueva imagen.
  105.      * Si $y no se indica, este se añadira con un ancho proporcinal.
  106.      */
  107.     public function reducir($x, $y = 0)
  108.     {      
  109.         if($y == 0) {
  110.             //Obtener el alto proporcionalmente.
  111.             $y = imagesy($this->_imagen) * $x;
  112.             $y = $y / imagesx($this->_imagen);
  113.         }
  114.  
  115.         $this->_nuevaImagen = imagecreatetruecolor($x, $y);
  116.  
  117.         imagecopyresampled($this->_nuevaImagen,
  118.                    $this->_imagen,
  119.                    0,
  120.                    0,
  121.                    0,
  122.                        0,
  123.                    $x,
  124.                        $y,
  125.                    imagesx($this->_imagen),
  126.                    imagesy($this->_imagen));
  127.  
  128.         switch($this->_formato)
  129.         {              
  130.             case "jpeg": imagejpeg($this->_nuevaImagen,$this->_nombre,$this->_compresion);
  131.                 break;
  132.  
  133.             case "jpg": imagejpeg($this->_nuevaImagen,$this->_nombre,$this->_compresion);
  134.                 break;
  135.  
  136.             case "png": imagepng($this->_nuevaImagen,$this->_nombre,$this->_compresion);
  137.                 break;
  138.  
  139.             default : return "Formato de imagen NO soportado.[jpeg|jpg|png]";
  140.                 break;
  141.         }              
  142.     }
  143. }
  144. ?>

con esta clase solo lo haces asi:

Código PHP:
Ver original
  1. //thumb
  2.     include("image.php");
  3. //imagen origen
  4.         $imagen = "carpeta/nombre de la imagen";
  5.  
  6. //crear objeto
  7.         $thumbnails = new Imagenes();
  8.  
  9. //indicar la imagen origen
  10.         $thumbnails->setImagen($imagen);
  11.  
  12. //indicar el formato de la imagen origen
  13.         $thumbnails->setFormato("jpg");
  14.  
  15. /*indicar el nivel de compresión. Segun este nivel la imagen
  16. tendra mayor o menos calidad.*/
  17.         $thumbnails->setCompresion(90);
  18.                    
  19. //indicar donde se creará y con que nombre el thumbnails
  20.         $thumbnails->setNombre("thumb/nuevo_nombre");
  21.  
  22. //indicar el tamaño del thumbnails (250)
  23.         $thumbnails->reducir(150);

como ves solo funciona con jpg, pero se puede arreglar para png y gif, además hay que saber la ruta de la imagen suerte.

otra cosa más facil es que extraigas la ruta de la imagen y la redimensiones con javascript o con el mismo php para no crear la imagen de nuevo en fin eso es cosa tuya.