title: resize multiple images on upload not working
body: <p>I'm having a couple of issues when I try to resize temp files that are being uploaded.</p>
  
  <p>I'm using the following <strong>ResizeImage.php</strong> class:</p>
  
  <pre><code>class ResizeImage {
      // *** Class variables
      private $image;
      private $width;
      private $height;
      private $imageResized;
  
      function __construct($fileName)
      {
          // *** Open up the file
          $this-&gt;image = $this-&gt;openImage($fileName);
  
          // *** Get width and height
          $this-&gt;width  = imagesx($this-&gt;image);
          $this-&gt;height = imagesy($this-&gt;image);
      }
  
      ## --------------------------------------------------------
  
      private function openImage($file)
      {
          // *** Get extension
          $extension = strtolower(strrchr($file, '.'));
  
          switch($extension)
          {
              case '.jpg':
              case '.jpeg':
                  $img = @imagecreatefromjpeg($file);
                  break;
              case '.gif':
                  $img = @imagecreatefromgif($file);
                  break;
              case '.png':
                  $img = @imagecreatefrompng($file);
                  break;
              default:
                  $img = false;
                  break;
          }
          return $img;
      }
  
      ## --------------------------------------------------------
  
      public function processImage($newWidth, $newHeight, $option="auto")
      {
          // *** Get optimal width and height - based on $option
          $optionArray = $this-&gt;getDimensions($newWidth, $newHeight, $option);
  
          $optimalWidth  = $optionArray['optimalWidth'];
          $optimalHeight = $optionArray['optimalHeight'];
  
  
          // *** Resample - create image canvas of x, y size
          $this-&gt;imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
          imagecopyresampled($this-&gt;imageResized, $this-&gt;image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this-&gt;width, $this-&gt;height);
  
  
          // *** if option is 'crop', then crop too
          if ($option == 'crop') {
              $this-&gt;crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
          }
      }
  
      ## --------------------------------------------------------
  
      private function getDimensions($newWidth, $newHeight, $option)
      {
  
         switch ($option)
          {
              case 'exact':
                  $optimalWidth = $newWidth;
                  $optimalHeight= $newHeight;
                  break;
              case 'portrait':
                  $optimalWidth = $this-&gt;getSizeByFixedHeight($newHeight);
                  $optimalHeight= $newHeight;
                  break;
              case 'landscape':
                  $optimalWidth = $newWidth;
                  $optimalHeight= $this-&gt;getSizeByFixedWidth($newWidth);
                  break;
              case 'auto':
                  $optionArray = $this-&gt;getSizeByAuto($newWidth, $newHeight);
                  $optimalWidth = $optionArray['optimalWidth'];
                  $optimalHeight = $optionArray['optimalHeight'];
                  break;
              case 'crop':
                  $optionArray = $this-&gt;getOptimalCrop($newWidth, $newHeight);
                  $optimalWidth = $optionArray['optimalWidth'];
                  $optimalHeight = $optionArray['optimalHeight'];
                  break;
          }
          return array('optimalWidth' =&gt; $optimalWidth, 'optimalHeight' =&gt; $optimalHeight);
      }
  
      ## --------------------------------------------------------
  
      private function getSizeByFixedHeight($newHeight)
      {
          $ratio = $this-&gt;width / $this-&gt;height;
          $newWidth = $newHeight * $ratio;
          return $newWidth;
      }
  
      private function getSizeByFixedWidth($newWidth)
      {
          $ratio = $this-&gt;height / $this-&gt;width;
          $newHeight = $newWidth * $ratio;
          return $newHeight;
      }
  
      private function getSizeByAuto($newWidth, $newHeight)
      {
          if ($this-&gt;height &lt; $this-&gt;width)
          // *** Image to be resized is wider (landscape)
          {
              $optimalWidth = $newWidth;
              $optimalHeight= $this-&gt;getSizeByFixedWidth($newWidth);
          }
          elseif ($this-&gt;height &gt; $this-&gt;width)
          // *** Image to be resized is taller (portrait)
          {
              $optimalWidth = $this-&gt;getSizeByFixedHeight($newHeight);
              $optimalHeight= $newHeight;
          }
          else
          // *** Image to be resizerd is a square
          {
              if ($newHeight &lt; $newWidth) {
                  $optimalWidth = $newWidth;
                  $optimalHeight= $this-&gt;getSizeByFixedWidth($newWidth);
              } else if ($newHeight &gt; $newWidth) {
                  $optimalWidth = $this-&gt;getSizeByFixedHeight($newHeight);
                  $optimalHeight= $newHeight;
              } else {
                  // *** Sqaure being resized to a square
                  $optimalWidth = $newWidth;
                  $optimalHeight= $newHeight;
              }
          }
  
          return array('optimalWidth' =&gt; $optimalWidth, 'optimalHeight' =&gt; $optimalHeight);
      }
  
      ## --------------------------------------------------------
  
      private function getOptimalCrop($newWidth, $newHeight)
      {
  
          $heightRatio = $this-&gt;height / $newHeight;
          $widthRatio  = $this-&gt;width /  $newWidth;
  
          if ($heightRatio &lt; $widthRatio) {
              $optimalRatio = $heightRatio;
          } else {
              $optimalRatio = $widthRatio;
          }
  
          $optimalHeight = $this-&gt;height / $optimalRatio;
          $optimalWidth  = $this-&gt;width  / $optimalRatio;
  
          return array('optimalWidth' =&gt; $optimalWidth, 'optimalHeight' =&gt; $optimalHeight);
      }
  
      ## --------------------------------------------------------
  
      private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
      {
          // *** Find center - this will be used for the crop
          $cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
          $cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );
  
          $crop = $this-&gt;imageResized;
          //imagedestroy($this-&gt;imageResized);
  
          // *** Now crop from center to exact requested size
          $this-&gt;imageResized = imagecreatetruecolor($newWidth , $newHeight);
          imagecopyresampled($this-&gt;imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
      }
  
      ## --------------------------------------------------------
  
      public function saveImage($savePath, $imageQuality="100")
      {
          // *** Get extension
          $extension = strrchr($savePath, '.');
             $extension = strtolower($extension);
  
          switch($extension)
          {
              case '.jpg':
              case '.jpeg':
                  if (imagetypes() &amp; IMG_JPG) {
                      imagejpeg($this-&gt;imageResized, $savePath, $imageQuality);
                  }
                  break;
  
              case '.gif':
                  if (imagetypes() &amp; IMG_GIF) {
                      imagegif($this-&gt;imageResized, $savePath);
                  }
                  break;
  
              case '.png':
                  // *** Scale quality from 0-100 to 0-9
                  $scaleQuality = round(($imageQuality/100) * 9);
  
                  // *** Invert quality setting as 0 is best, not 9
                  $invertScaleQuality = 9 - $scaleQuality;
  
                  if (imagetypes() &amp; IMG_PNG) {
                       imagepng($this-&gt;imageResized, $savePath, $invertScaleQuality);
                  }
                  break;
  
              // ... etc
  
              default:
                  // *** No extension - No save.
                  break;
          }
  
          imagedestroy($this-&gt;imageResized);
      }
  
  
      ## --------------------------------------------------------
  
  }
  </code></pre>
  
  <p>The class works great for files already on the server in a specific directory.
  However if I try to use it for temp files that are being uploaded through a form like this:</p>
  
  <pre><code>$counter = count($_FILES['file']['name']);
  if($counter &gt; 0){
  
      for($i=0; $i&lt;$counter; $i++) {
  
          $tmpFilePath = $_FILES['file']['tmp_name'][$i];
  
          if($tmpFilePath != ""){
  
              $filePath = $path1.$path2.'/'.$path3.'/'.time().$i.'.jpg';
  
              $resizeObj = new ResizeImage($tmpFilePath);
              $resizeObj -&gt; processImage(2000, 2000, 'auto');
              $resizeObj -&gt; saveImage($filePath, 100);
          }
      }
  }
  </code></pre>
  
  <p>I get the following PHP Warnings:</p>
  
  <pre><code>imagesx() expects parameter 1 to be resource, boolean given in /home/xxxx/xxxx/xxxx/ResizeImage.php on line 25
  imagesy() expects parameter 1 to be resource, boolean given in /home/xxxx/xxxx/xxxx/ResizeImage.php on line 26
  imagecopyresampled() expects parameter 2 to be resource, boolean given in /home/xxxx/xxxx/xxxx/ResizeImage.php on line 68
  </code></pre>
  
  <p>Any help is greatly appreciated</p>