sábado, 21 de febrero de 2009

Generador imágenes dinámicas (Codeigniter)

<?php 


class Imagenes extends Controller {



     function 
Imagenes()

     {

        
parent::Controller();    

    }

    function 
getimage(){

        

        

        
$this->load->database();

        
$db_request $this->db->query('SELECT * FROM imagenes WHERE id_imagen='.$this->uri->segment(3));

        
$fila $db_request->row();

        
$fichero_imagen $fila->nombre_imagen;

        
$path './documentos-imagenes/';

        if(
file_exists($path.$fichero_imagen)){

            
$config['image_library'] = 'gd2';

            
$config['source_image']    = './documentos-imagenes/'.$fichero_imagen;

            
$config['maintain_ratio'] = FALSE;

            
$default = array('width''height');

            
$array$this->uri->uri_to_assoc(4$default);

            
$config['width'] = $array['width'];

            
$config['height']    = $array['height'];

            
$config['dynamic_output'] = TRUE;

            
$config['quality'] = 90//calidad de 0 a 100%            

            
$this->load->library('image_lib'$config);            

            if (!
$this->image_lib->resize())

            {

                echo 
$this->image_lib->display_errors();

            }

        }

    }

}

    

/* End of file imagenes.php */

/* Location: ./system/application/controllers/imagenes.php */


Ahora podemos generar imágenes, por ejemplo en cualquier otra página php:


$this->load->helper('url');  // Utilizamos el url helper


echo '<img src="'.site_url("imagenes/getimage/1/width/90/height/100").'" />';




echo '<img src="'.site_url("imagenes/getimage/2/width/100/height/150").'" />';


Le pasamos el identificador y el tamaño.  Podemos también añadirle más parámetros y opciones.


De forma sencilla y rápida podemos tener cualquier imagen, adaptada al tamaño que queramos, en cualquier sitio de la web.


 

2 comentarios:

  1. Hola, una pregunta. ¿ Se ha de configurar algo de codeIgniter antes para que funcione el ejemplo ?

    Resulta que no consigo hacerlo funcionar desde el controlador, pero si lo hago lo siguiente directamente en un php de la raíz, sí que me funciona.

    ResponderEliminar
  2. te pego el código que te comentaba en el comentario anterior:

    Hola, una pregunta. ¿ Se ha de configurar algo de codeIgniter antes para que funcione el ejemplo ?

    Resulta que no consigo hacerlo funcionar desde el controlador, pero si lo hago lo siguiente directamente en un php de la raíz, sí que me funciona.

    header('Content-Type: image/gif');
    $img = @imagecreatefromgif('img/foto.gif');
    imagegif($img);
    imagedestroy($img);

    ResponderEliminar