Salve, in questo codice che permette il resize delle immagini vorrei preservare la trasparenza per le immagini png e gif caricate che invece vengono mostrate con sfondo nero.

codice:
error_reporting(0);

$change="";
$abc="";




 define ("MAX_SIZE","500");
 function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }


 $errors=0;
  
 if($_SERVER["REQUEST_METHOD"] == "POST")
 {
     $image =$_FILES["file"]["name"];
    $uploadedfile = $_FILES['file']['tmp_name'];


     if ($image) 
     {
     
         $filename = stripslashes($_FILES['file']['name']);
     
          $extension = getExtension($filename);
         $extension = strtolower($extension);
        
        
 if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
         {
        
             $change='<div class="msgdiv">Unknown Image extension </div> ';
             $errors=1;
         }
         else
         {


 $size=filesize($_FILES['file']['tmp_name']);




if ($size > MAX_SIZE*1024)
{
    $change='<div class="msgdiv">You have exceeded the size limit!</div> ';
    $errors=1;
}




if($extension=="jpg" || $extension=="jpeg" )
{
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);


}
else if($extension=="png")
{
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);


}
else 
{
$src = imagecreatefromgif($uploadedfile);
}


echo $scr;


list($width,$height)=getimagesize($uploadedfile);




$newwidth=60;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);


$newwidth1=128;
$newheight1=($height/$width)*$newwidth1;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);


$newwidth2=100;
$newheight2=($height/$width)*$newwidth2;
$tmp2=imagecreatetruecolor($newwidth2,$newheight2);


$newwidth3=80;
$newheight3=($height/$width)*$newwidth3;
$tmp3=imagecreatetruecolor($newwidth3,$newheight3);


imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);


imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);


imagecopyresampled($tmp2,$src,0,0,0,0,$newwidth2,$newheight2,$width,$height);


imagecopyresampled($tmp3,$src,0,0,0,0,$newwidth3,$newheight3,$width,$height);


$filename = "images/". $_FILES['file']['name'];


$filename1 = "images/small/". $_FILES['file']['name'];


$filename2 = "images/100/". $_FILES['file']['name'];


$filename3 = "images/80/". $_FILES['file']['name'];






imagejpeg($tmp,$filename,100);


imagejpeg($tmp1,$filename1,100);


imagejpeg($tmp2,$filename2,100);


imagejpeg($tmp3,$filename3,100);


imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);
imagedestroy($tmp2);
imagedestroy($tmp3);
}}


}


//If no errors registred, print the success message
 if(isset($_POST['Submit']) && !$errors) 
 {
 
   // mysql_query("update {$prefix}users set img='$big',img_small='$small' where user_id='$user'");
     $change='<div>Image Uploaded Successfully!</div>';  }


Grazie