Generar imagenes dinámicamente en CodeIgniter
A veces nos puede interesar crear imágenes dinámicamente a partir de alguna que ya tengamos alojada en nuestro servidor, a continuación veremos como hacerlo con la ayuda de CodeIgniter.
Una imagen generada dinámicamente puede tener varias ventajas como por ejemplo:
- Podemos controlar fácilmente cuanta gente la esta viendo
- Restringir la visión de esta a los usuarios que queramos
- Evitar que los usuarios tengan acceso a la imagen original
- Poder generar una imagen del tamaño que queramos según convenga
- Generar thumbnails, o modificaciones de la imagen original sin tener que generar copias
Esta ultima ventaja también nos trae a la desventaja, según lo que queramos, ya que al generar una imagen dinámicamente en PHP lo que estamos haciendo es aligerar la carga en el disco duro pero augmentar el tamaño del procesamiento, con lo que estamos cargando al servidor.
Subidor de Imagenes (Tercera parte): Subir y miniaturizar
Bueno seguimos con lo del ultimo día. Ahora lo que nos queda hacer es el controlador que se ocupe de subir nuestro fichero en el servidor y luego cree una imagen en miniatura de esta (thumbnail).
Como ya dije en el articulo anterior, usaremos estas dos librerías: File Uploading Class y Image Manipulation Class.
Al ser un solo formulario lo haremos todo en una misma función del controlador. Para empezar necesitaremos subir el archivo al servidor y a su vez almacenar la información en la base de datos:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '5000';
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload("imagen"))
{
echo $this->upload->display_errors();
}
else
{
$data = $this->upload->data();
$this->db->query("INSERT INTO `imagenes` (`imagen`, `fecha`, `ip`) VALUES (?, ?, ?)", array($data['file_name'], time(), $_SERVER['REMOTE_ADDR']));
Como veis es muy fácil de usar, hay que especificar las distintas opciones que queremos en el array config (hay mas opciones disponibles en la guía de usuario de CI). Le pasamos el "name" input del formulario para subir la imagen en la función "do_upload". Y luego simplemente añadir un registro en la base de datos con la información que nos da "$this->upload->data()";
Ahora necesitaremos que a partir de esta imagen se cree un thumbnail, lo haremos así:
Subidor de Imagenes (Primera parte): Planificación
Hay muchas veces que no se me ocurren ideas para publicar artículos de la nada, sino que cuando estoy trabajando en alguna aplicación para mí o para asuntos profesionales pienso: "anda! esto quizá le interesa a alguien que lea el blog".
Últimamente veo que esta muy de moda páginas como ImagesHack o Photobucket que son páginas que simplemente dejan al usuario subir una imagen de su ordenador a uno de los servidores para que luego se pueda mostrar a cualquier otra persona, normalmente se suele usar para foros y sitios públicos de este tipo.
Así que todo esto me viene muy bien para introduciros dos clases muy importantes en el CodeIgniter: File Uploading Class, que es la que nos ayudará a subir la imagen, controlar todos los parámetros de esta acción y demás. La segunda clase será la Image Manipulation que nos permitirá en este caso crear un thumbnail (una imagen en miniatura) de la versión original para mejor inserción en foros y otros sitios.
La aplicación será muy sencilla y constará de dos grandes pasos:
- Subir y tratar la imagen
- Mostrar el link, el bbccode para los foros, etc..
Pues de momento lo dejaré aquí y el próximo articulo empezaremos con el sistema en cuestión. Si queréis venir preparados "a clase", iros mirando esas dos librerías que son las que usaremos básicamente.
Hasta pronto.
