title: PHP temporary file upload not valid Image resource
body: <p>Hi I have a class for resizing images (resizeManager.php):</p>
  
  <pre><code>        Class ResizeManager
      {
          // *** 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 resizeImage($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>In my page (mypage.php) I want to resize my uploaded image only if its width>800px or height>600px.</p>
  
  <p>So I wrote:</p>
  
  <pre><code>list($width, $height, $type, $attr) = getimagesize($_FILES['pictures']['tmp_name'][$number]); 
  
  if($width&gt;800 || $height&gt;600)
  {
   $resizemgr = new ResizeManager($_FILES['pictures']['tmp_name'][$number]);
      //then the actual resizing                      
      [...]
  }
  else
  
  $ret=@move_uploaded_file($_FILES['pictures']['tmp_name'][$number],$destinationFile); 
  </code></pre>
  
  <p>But I receive these <strong>errors</strong> </p>
  
  <pre><code>Warning: imagesx(): supplied argument is not a valid Image resource in resizeManager.php 
  
  Warning: imagesy(): supplied argument is not a valid Image resource in resizeManager.php 
  </code></pre>
  
  <p>Can I point to a temporary file this way?</p>
  
  <p>thanks </p>
  
  <p>luca</p>