Note that there are some explanatory texts on larger screens.

plurals
  1. POuploading png images with transparent background using php and keeping the background transparent
    text
    copied!<p>I have a php page which takes a user image and uploads it to my webserver. </p> <p>I have just noticed that if I have a png with a transparent background, and upload it, the background is changed to white.</p> <p>For example I create a new image in photoshop with a transparent background and then add a coloured circle to the page. I save the image as a png and uplod to the server via ftp then the image is shown as a circle on the webpage as the background is transparent.</p> <p>If I upload the image using php with a file input box the image is changed to white.</p> <p>I have tried to use imagealphablending,imagecolorallocatealpha,imagefill and imagesavealpha to retain the transparent background but it just changes the bg to black.</p> <p>any clues?</p> <p>heres my php code</p> <pre><code> &lt;?php $path = "../userfiles/orig/"; $userpath="../".$_REQUEST['userpath']."/"; function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $valid_formats = array("jpg", "png", "gif", "bmp","jpeg","PNG","JPG","JPEG","GIF","BMP"); if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ $name = $_FILES['photoimg']['name']; $size = $_FILES['photoimg']['size']; if(strlen($name)){ $ext = getExtension($name); if(in_array($ext,$valid_formats)){ if($size&lt;(2048*2048)){ $time1=time(); $actual_image_name =$time1."_".str_replace(" ", "_", $name); $tmp = $_FILES['photoimg']['tmp_name']; if(move_uploaded_file($tmp, $path.$actual_image_name)){ $image=$actual_image_name; /*--------resize image-----------*/ $size = 320; // the imageheight $filedir = '../userfiles/orig/'; // the directory for the original image $thumbdir = $userpath; // the directory for the resized image $prefix = $time1.'_'; // the prefix to be added to the original name $maxfile = '20000000'; $mode = '0666'; $userfile_name =str_replace(" ", "", $_FILES['photoimg']['name']); $userfile_tmp = str_replace(" ", "", $_FILES['photoimg']['tmp_name']); $userfile_size =$_FILES['photoimg']['size']; $userfile_type = $_FILES['photoimg']['type']; if (isset($_FILES['photoimg']['name'])){ $prod_img = $filedir.$actual_image_name; $prod_img_thumb = $thumbdir.$prefix.$userfile_name; move_uploaded_file($userfile_tmp, $prod_img); chmod ($prod_img, octdec($mode)); $sizes = getimagesize($prod_img); $aspect_ratio = $sizes[1]/$sizes[0]; if ($sizes[1] &lt;= $size){ $new_width = $sizes[0]; $new_height = $sizes[1]; }else{ $new_height = $size; $new_width = abs($new_height/$aspect_ratio); } $destimg=ImageCreateTrueColor($new_width,$new_height) or die('Problem In Creating image'); switch($ext){ case "jpg": case "jpeg": case "JPG": case "JPEG": $srcimg=ImageCreateFromJPEG($prod_img)or die('Problem In opening Source Image'); break; case "PNG": case "png": $srcimg = imageCreateFromPng($prod_img)or die('Problem In opening Source Image'); imagealphablending($destimg, false); $colorTransparent = imagecolorallocatealpha($destimg, 0, 0, 0x7fff0000); imagefill($destimg, 0, 0, $colorTransparent); imagesavealpha($destimg, true); break; case "BMP": case "bmp": $srcimg = imageCreateFromBmp($prod_img)or die('Problem In opening Source Image'); break; case "GIF": case "gif": $srcimg = imageCreateFromGif($prod_img)or die('Problem In opening Source Image'); break; default: $srcimg=ImageCreateFromJPEG($prod_img)or die('Problem In opening Source Image'); } if(function_exists('imagecopyresampled')){ imagecopyresampled($destimg,$srcimg,0,0,0,0,$new_width,$new_height,imagesX($srcimg),imagesY($srcimg)) or die('Problem In resizing'); }else{ Imagecopyresized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,imagesX($srcimg),imagesY($srcimg)) or die('Problem In resizing'); } ImageJPEG($destimg,$prod_img_thumb,90) or die('Problem In saving'); } unlink($prod_img); echo "&lt;img src='".$prod_img_thumb."'&gt;"; }else{ echo "Fail upload folder with read access."; } }else{ echo "Image file size max 3 MB"; } }else{ echo "Invalid file format.."; } }else{ echo "Please select image..!"; } exit; } ?&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload