2015-02-23 202 views
0

这是允许您创建4个调整大小的图像的功能。不幸的是,带有透明背景的图像是用黑色背景重新创建的。 我该如何解决?偏好是透明的,但我很高兴,甚至白色......感谢您的帮助。调整图像大小,透明背景?

error_reporting(0); 

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


define ("MAX_SIZE","5000"); 
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=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,255,255,255,$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 class="msgdiv">Image Uploaded Successfully!</div>'; 
} 
+0

你能帮我吗? – Okram92 2015-02-23 08:02:43

回答

0

JPEG无法显示透明,但您可以使用PNG代替。