¿Cómo redimensionar imágenes con CodeIgniter 3?
- Andrés Cruz
El procesamiento digital de imágenes es un trabajo fundamental que debemos realizar en prácticamente cualquier software administrativo o que cuente con un módulo de gestión hoy en día, tareas como hacerle el resize o cambio de tamaño en una imagen para que ocupe cierto tamaño, bajar de tamaño a la imagen entre otras operaciones son tareas fundamentales que debemos realizar.
No necesitamos incorporar ninguna librería externa como veremos en este tutorial, con lo que nos trae CodeIgniter en su core interno hace el trabajo de cambio de tamaño de la imagen perfectamente y de esta manera optimizar las imágenes según lo requiera nuestro proyecto escalando las imágenes a las proporciones que definamos.
En este artículo veremos cómo redimensionar imágenes con Codeigniter; este artículo representa una extensión del artículo pasado titulado: Upload de archivos con Codeigniter, en el mismo explicamos como subir archivos (uploads) utilizando la librería upload provista por CodeIgniter, obviamente no se puede redimensionar un .doc, .txt, etc, pero si un .png, .jpg, .gif u otros formatos de compresión de imágenes; veamos cómo funciona la librería de image_lib la cual permite redimensionar imágenes como veremos a continuación.
Formas de redimensionar o escalar imágenes con CodeIgniter
Hay dos casos posibles o mejor dicho comunes: podemos redimensionar las imágenes justo después de hacer el upload (carga de imágenes) o podemos redimensionar a cualquier imagen que se encuentre alojada en el servidor por distintos medios, para ambos casos el proceso es el mismo, solo varía de donde obtendremos la data ($data
):
Pasaremos por alto temas que ya fueron tratados en el artículo pasado como:
- Cómo definir el formulario para subir imágenes.
- Cómo crear el controlador para subir y/o redimensionar la imagen (dependiendo de su preferencia).
Código completo para redimensionar una imagen
$CI = & get_instance();
$CI->load->library('image_lib');
$config['image_library'] = 'gd2';
$config['source_image'] = $data['full_path'];
$config['new_image'] = 'uploads/';
$config['maintain_ratio'] = TRUE;
$config['create_thumb'] = FALSE;
$config['width'] = 800;
$config['height'] = 800;
$CI->image_lib->initialize($config);
if (!$CI->image_lib->resize()) {
echo $this->image_lib->display_errors('', '');
}
Analizando el código del resize la imagen anterior
En este ejemplo estamos suponiendo que el redimensionamiento de la imagen se realiza luego de que se ha cargado una imagen en el servidor; por lo tanto se tiene la ventaja de que CodeIgniter puede dar datos sobre el upload o carga de la imagen:
- Ruta de la imagen.
- Nombre de la imagen.
- Extensión de la imagen.
Esos son algunos de los datos que podemos obtener llamando al siguiente método:
$data= $this->upload->data();
Cargando la librería de manipulación de imágenes de CodeIgniter
$CI = & get_instance();
Como indicamos antes, no es necesario traernos una librería o API de un tercero para cambiar de tamaño una imagen, con lo que nos ofrece CodeIgniter realizamos esta labor perfectamente; lo primero que hacemos en el código anterior es llamar al método get_instance()
; el método permite cargar recursos nativos de CodeIgniter; en este caso se cargará la librería que permitirá redimensionar las imágenes.
Ahora si es posible cargar la librería de manipulación de imágenes:
$CI->load->library('image_lib');
Preferencias del redimensionamiento de la imagen
El array $config
indica las preferencias para la imagen a manipular (en este caso, a redimensionar); las cuales pueden ser:
Preferencia | Valor por defecto | Opciones | Descripcion |
---|---|---|---|
image_library | GD2 | GD, GD2, ImageMagick, NetPBM | Se establece la librería de la imagen a utilizar. |
source_image | None | None | La ruta en donde se encuentra la imagen incluyendo el nombre completo de la imagen (con su extensión). |
new_image | None | None | La ruta de la imagen generada producto del redimensionamiento. La misma representa la ruta destino en donde se almacenará la imagen. |
width | None | None | Se establece el ancho de la imagen. |
height | None | None | Se establece el alto de la imagen. |
maintain_ratio | TRUE | TRUE/FALSE (boolean) | Especifica si se mantiene las proporciones (TRUE) o no (FALSE) al momento de redimensionar la imagen. |
create_thumb | FALSE | TRUE/FALSE (boolean) | Especifica si se creará un thumbnail (TRUE) o imagen en miniatura. |
Estos son algunos de las preferencias de la imagen, hay otros como la calidad de la imagen, rotación y corte; los demas los puedes encontrar en la documentación oficial de CodeIgniter; click aquí.
Luego de que hayamos construido el array de configuración $config
, inicializamos la librería con:
$CI->image_lib->initialize($config);
Redimensionando la imagen
Ahora si es posible redimensionar la imagen; la siguiente función devuelve un booleano, como podrás imaginar:
- TRUE el redimensionamiento fue exitoso.
- FALSE el redimensionamiento no fue exitoso, el error es devuelto con la función: $this->image_lib->display_errors();
if (!$CI->image_lib->resize()) {
echo $this->image_lib->display_errors();
}
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter