title: PHP imagecreatefromjpeg works, so why doesn't png/bmp/gif work?
body: <p>I want to upload and resize pictures with different extensions. The php crops the biggest possible square from the center of the original pic, then saves it in 360*360 pixels.  </p>
  
  <p>The code works fine with jpeg files, but with gif, bmp and png I get a corrupted file with 33 Byte size.  </p>
  
  <p>Here's most of the code:  </p>
  
  <pre><code>$file_temp = $_FILES["pic"]["tmp_name"];
  list ($width, $height, $type) = getimagesize ($file_temp);
  
  $picture_name = "... a name.ext ...";
  $upload = "... some dir/$picture_name";
  
  
  
  if (move_uploaded_file($file_temp, "$upload"))
  {
  
  
  
      //switches content-type and calls the imagecreatefrom... function
      if ($type == 1)
      {
          header ('Content-Type: image/gif');
          $image = imagecreatefromgif($upload);
      }
      elseif ($type == 2)
      {
          header ('Content-Type: image/jpeg');
          $image = imagecreatefromjpeg($upload);
      }
      elseif ($type == 3)
      {
          header ('Content-Type: image/png');
          $image = imagecreatefrompng($upload);
      }
      else
      {
          header ('Content-Type: image/x-ms-bmp');
          $image = imagecreatefromwbmp($upload);
      }
  
  
      $image_p = imagecreatetruecolor(360, 360);
  
  
  
  
      //this code below should preserve transparency but I couldn't try it out for now...
  
      if($type==1 or $type==3)
      {
          imagecolortransparent($image_p, imagecolorallocatealpha($image_p, 0, 0, 0, 127));
          imagealphablending($image_p, true);
          imagesavealpha($image_p, true);
      }
  
  
  
  
  
      //this part is for cropping
      $x=0;
      $y=0;
  
      if ($width &gt; $height)
      {
          $x= ($width - $height)/2;
          $width = $height;
      }
      else
      {
          $y = ($height - $width)/2;
          $height = $width;
      }
  
  
  
  
  
      imagecopyresampled ($image_p, $image, 0, 0, $x, $y, 360, 360, $width, $height);
      if ($type == 1)
          imagegif ($image_p, $upload, 80);
      elseif ($type == 2)
          imagejpeg ($image_p, $upload, 80);
      elseif ($type == 3)
          imagepng ($image_p, $upload, 80);
      else
          imagewbmp ($image_p, $upload, 80);
  }
  </code></pre>
  
  <p>So, only jpeg files are processed correctly, gif, png and bmp files aren't. I'm out of ideas...<br>
  Thanks in advance!</p>