0

The following function should dynamically resize a user uploaded image, and loop through to put a copy in 5 different folders. it works correctly except for one problem: The loop successfully executes once then stops. I've checked that count() is returning the right value for the upper limit, which is 5.Not sure why its stopping after the first iteration. Thanks in advance for any help.

<?PHP 

public function imgResize($image){

    $userPath=$_SESSION['userFolder'].'/images';
    $imgDetails=explode('/',$image);
    $imgName=$imgDetails[2];

    $newWidth='1024';
    $newHeight='768';

    $size=getimagesize($image);
    $imgType=$size['mime'];

    $reqdWidths=array('800','1024','1400','1600','2400');
    $width=$size[0];
    $height=$size[1];

    $dest=imagecreatetruecolor($newWidth,$newHeight);

 /*Put image create functions in a switch-case to deal with multiple image types*/ 
 function createImage($img){
     $size=getimagesize($img);
     $typeImg=$size['mime'];

    switch($typeImg){
     case 'image/png': 
     $newImage=imagecreatefrompng($img);
     return $newImage;
     break;

     case 'image/jpeg': 
     $newImage=imagecreatefromjpeg($img);
     return $newImage;
     break;

     case 'image/gif' :
     $newImage=imagecreatefromgif($img);
     return $newImage;
     break;
      }
    }

  function finalImg($imgType,$dest,$userDestImage){
   switch($imgType){
     case 'image/png': 
     $final=imagepng($dest,$userDestImage);
     return $final;
     break;

     case 'image/jpeg': 
     $final=imagejpeg($dest,$userDestImage);
     return $final;
     break;

     case 'image/gif' :
     $final=imagegif($dest,$userDestImage);
     return $final;
     break;
      }
  }  

    $source=call_user_func('createImage',$image);
    /*LOOP AND CREATE DIFFERENT IMAGES IN DIFFERENT FOLDERS*/
    for($i=0;$i<count($reqdWidths);$i++){
    $userDestImage=$userPath.'/width_'.$reqdWidths[$i].'/'.$imgName;

    imagecopyresized($dest,$source,0,0,0,0,$newWidth,$newHeight,$width,$height );
    $imgFinal=call_user_func('finalImg',$imgType,$dest,$userDestImage);
    return $imgFinal; 
    imagedestroy($dest);
  }

 }//END FUNCTION
steveBK
  • 17
  • 5

0 Answers0