image_lib. Usando las opciones que nos da CodeIgniter podemos redimensionar, recortar,
rotar y poner marca de agua; para este ejemplo vamos a ver cómo redimensionar las imágenes.
paso 1
para el ejemplo vamos a llamar a la aplicación ci_images.
lo primero que hacemos es crear 2 directorios, uno para guardar las imágenes originales y el
otro para las imágenes que se van a redimensionado.
En la raíz de nuestro proyecto creamos un directorio llamado uploads y a su vez dentro de este
creamos otro llamado thumbs.
Donde quedan guardadas las imágenes originales: ci_images/uploads/
Donde se guardan las nuevas imágenes: ci_images/uploads/thumbs/
Paso 2
vamos a ci_images/application/controllers/ y dentro de esta carpeta creamos un controlador al
que lo nombramos como: images.php
Código del controlador images.php
<?php
class Images extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
function index()
{
$this->load->view('upload_image', array('error' => ' ' ));
}
// ************************ SE SUBEN LA IMÁGENES ************************
function do_upload()
{
$config['upload_path'] = './uploads/'; // definimos la carpeta donde se guardaran
$config['allowed_types'] = 'gif|jpg|png'; // el tipo de imágenes permitidas
// $config['file_name']='nuevo_nombre'; // para renombrar la imagen
$config['overwrite']=TRUE; // sobreescribir las imágenes
$config['remove_spaces']=TRUE;
$config['max_size'] = '2048'; // el peso máximo que de la imagen a redimencionar
$config['max_width'] = '2000'; // el ancho máximo
$config['max_height'] = '1500'; // la máxima altura
$this->load->library('upload', $config);
if (!$this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_image', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
foreach ($this->upload->data() as $item => $value){
if($item=="file_path"){
$path=$value;
}if($item=="file_name"){
$name=$value;
}
}// end foreach
$this->resize($path,$name);
}
}
//*********************** SE REDIMENSIONAN *****************************
function resize($path,$name)
{
$config['image_library'] = 'gd2';
$config['source_image'] = $path.$name; // le decimos donde esta la imagen que acabamos de subir
$config['new_image']=$path.'thumbs'; // las nuevas imágenes se guardan en la carpeta "thumbs"
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 550;
$config['height'] = 450;
$this->load->library('image_lib', $config);
if (!$this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
$this->image_lib->resize();
$this->load->view('upload_success');
}
}
?>
Paso 3
Creamos la vista desde la cual podremos cargar las imágenes a redimnensionar; la llamamos
upload_image.php, la ruta donde la guardamos: ci_images/application/views/
Código de la vista upload_image.php
<html>
<head>
<title>Upload Form</title>
</head>
<body>
<hr/><hr/>
<h5>Suba una Imagen de 2 Mb o menos para redimensionar...</h5>
<?php echo $error;?>
<?php echo form_open_multipart('images/do_upload');?>
<input type="file" name="userfile" size="20" /><br>
<input type="submit" value="Subir Imagen" />
</form>
</body>
</html>
Último paso
En ci_images/application/views/ creamos otra vista llamada upload_success.php, la cual nosva informar que el proceso ha sido hecho con éxito si no hubo errores.
codigo de upload_success.php
<html>
<head>
<title>Succes</title>
</head>
<center><body>
<h4>La imágen se redimensionó con éxito!</h4>
<h5><?php echo anchor('images', 'Redimensionar otra imagen!'); ?></h5>
</body></center>
</html>
Probamos en el navegador: http://localhost/ci_images/index.php/images
Descargar ejemplo