I created a library that just uploads 1 image, crops it given the path, width, and height. But i cant figure out how I can have it crop as many images as i want and return an array of all the filenames it created. Here is my library, let me know if there is a good approach. thanks
<?php
/*
Usage:
-----------------------------------------------------------------------
$this->load->library('up_image');
$this->logo = $this->up_image->upload_image(upload_path, width, height);
*/
class up_image
{
/**
* Upload Image Method
* ----------------------
* @Param: Upload Path
* @Param: Width:
* @Param: Height:
**/
public function upload_image($path, $width, $height)
{
//load codeigniter instant to load stuff
$CI =& get_instance();
$config1 = array(
'allowed_types' => 'jpg|jpeg|png',
'upload_path' => $path,
'max_size' => 4000,
'remove_spaces' => TRUE,
'encrypt_name' => TRUE
);
$CI->load->library('upload', $config1);
$CI->upload->display_errors('<p class="errors">', '</p>');
//if upload do something
if($CI->upload->do_upload())
{
$image_data = $CI->upload->data();
$config2 = array(
'image_library' => 'gd2',
'source_image' => $image_data['full_path'],
'new_image' => $path . '/' . $image_data['file_name'],
'maintain_ratio' => TRUE,
'width' => $width,
'height' => $height
);
$CI->load->library('image_lib', $config2);
$CI->image_lib->resize();
return $image_data['file_name'];
}
else
{
return FALSE;
}
}
}
Update: I figured it out, here is the class and how to use it for anyone who is trying to do the something. What this class does is uploads the image and lets you create as many sizes of the original upload as you want.
[CLASS]
<?php
/*
Author: Sarmen B
URL: sarmenb.com
*/
class up_image
{
var $path = '';
/**
* Upload Image
* ----------------------
* @Param: Upload Path
* @Param: Width
* @Param: Height
**/
public function upload_image()
{
//load codeigniter instant to load stuff
$CI =& get_instance();
$config = array(
'allowed_types' => 'jpg|jpeg|png',
'upload_path' => $this->path,
'max_size' => 4000,
'remove_spaces' => TRUE,
'encrypt_name' => TRUE
);
$CI->load->library('upload', $config);
$CI->upload->display_errors('<p class="errors">', '</p>');
//if upload do something
if($CI->upload->do_upload())
{
//returns the images data as an array
return $CI->upload->data();
}
else
{
return FALSE;
}
}
/**
* Resize the image
* ----------------------
* @Param: $data data returned from upload_image()
* @Param: Width
* @Param: Height
**/
public function resize($data, $width, $height)
{
$CI =& get_instance();
$config = array(
'image_library' => 'gd2',
'source_image' => $data['full_path'],
'new_image' => $this->path . '/' . $data['file_name'],
'maintain_ratio' => TRUE,
'width' => $width,
'height' => $height,
'create_thumb' => FALSE
);
$CI->load->library('image_lib', $config);
$CI->image_lib->resize();
$CI->image_lib->clear();
unset($config);
return $data['file_name'];
}
}
Usage
$img1 = $this->up_image->upload_image();
$thumb = $this->up_image->resize($img1, 140, 120);
$img2 = $this->up_image->upload_image();
$large = $this->up_image->resize($img2, 420, 360);