Nishad Up Nishad Up - 4 months ago 41
PHP Question

codeingniter image resize before upload

I am trying to upload multiple images in codeigniter and reduce size of each image.
here is my view

<?php echo form_open_multipart('main_controller/do_insert');?>
<div id="mainDiv">
<div class='group'>
<div><input type="text" name="name[]"/></div>
<div><input type="file" name="img[]"/></div>
</div>
</div>
<input type="button" id="add an entry">
<input type="submit" value="save all"/>
<?php from_close();?>


and my javascript is look like

<script>
function add(x)
{
var str1="<div><input type='text' name='name"+x+"'/></div>"
var str2="<div><input type='file' name='img"+x+"'/></div>"
var str3="<input type='button' value='add an entry' onClick='add(x+1)'>";
$("#mainDiv").append(str1+str2+str3);
}
</script>


here is my controller

function do_insert{
while($i<=$counter) /*conter have value of total number for images just ignore*/
{
$config['upload_path'] = './images/';
$config['allowed_types'] = 'gif|jpg|png';

$this->load->library('upload', $config);

if ( ! $this->upload->do_upload($userfileName))
{
echo "error".count;
}
else
{
$data = array('upload_data' => $this->upload->data());
$img=$data['upload_data']['file_name']; /*for geting uploaded image name*/

$config['image_library'] = 'gd2';
$config['source_image'] = './images/'.$img;
$config['new_image'] = './images/';
$config['maintain_ratio'] = TRUE;
$config['width'] = 640;
$config['height'] = 480;

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

if (!$this->image_lib->resize()) {
echo $this->image_lib->display_errors();
}
else
{
echo "success"; /*and some code here*/
}
}
}
}


my problem is that only first image is getting re-sized remains kept as it original size.
And image is resized after once uploaded. I think this is not a proper way now
Is there any alternative way to resize image? it may be better if resize before do upload.

Answer

I have solved the problem resizing first image by making changes in my controller as `

$this->load->library('image_lib');
while($i<=$counter) /*conter have value of total number for images just ignore*/
{
      $config['upload_path'] = './images/';
      $config['allowed_types'] = 'gif|jpg|png';
      $this->load->library('upload', $config);
      if ( ! $this->upload->do_upload($userfileName))
      {
         echo "error".count;    
      }
      else
      {
            $image_data =   $this->upload->data();

            $configer =  array(
              'image_library'   => 'gd2',
              'source_image'    =>  $image_data['full_path'],
              'maintain_ratio'  =>  TRUE,
              'width'           =>  250,
              'height'          =>  250,
            );
            $this->image_lib->clear();
            $this->image_lib->initialize($configer);
            $this->image_lib->resize();
      }
}