WNO Posted March 14, 2011 Share Posted March 14, 2011 I am having difficulty keeping transparency on my png resizing function. I have searched all around and tried various solutions. However, all I keep getting is a black background. Everything else about the function is working fine. Any help would be appreciated. Here is the code for transparency that isn't working: $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h); imagealphablending($dst_img,false); imagesavealpha($dst_img,true); $transparent = imagecolorallocatealpha($dst_img, 255, 255, 255, 127); imagefilledrectangle($dst_img, 0, 0, $thumb_w, $thumb_h, $transparent); imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); Here is the full function code: function createthumb($name,$filename,$new_w,$new_h) { $system=explode(".",$name); if (preg_match("/jpg|jpeg/",$system[1])) { $src_img=imagecreatefromjpeg($name); } if (preg_match("/png/",$system[1])) { $src_img=imagecreatefrompng($name); } $old_x=imageSX($src_img); $old_y=imageSY($src_img); if ($old_x > $old_y) { $thumb_w=$new_w; $thumb_h=$old_y*($new_h/$old_x); } if ($old_x < $old_y) { $thumb_w=$old_x*($new_w/$old_y); $thumb_h=$new_h; } if ($old_x == $old_y) { $thumb_w=$new_w; $thumb_h=$new_h; } $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h); imagealphablending($dst_img,false); imagesavealpha($dst_img,true); $transparent = imagecolorallocatealpha($dst_img, 255, 255, 255, 127); imagefilledrectangle($dst_img, 0, 0, $thumb_w, $thumb_h, $transparent); imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); if (preg_match("/png/",$system[1])) { imagepng($dst_img,$filename); } else { imagejpeg($dst_img,$filename); } imagedestroy($dst_img); imagedestroy($src_img); } Link to comment https://forums.phpfreaks.com/topic/230612-png-transparency-issue-with-gd/ Share on other sites More sharing options...
mikecampbell Posted March 14, 2011 Share Posted March 14, 2011 imagecopyresampled() does not preserve transparency. Check this function (which unfortunately will be much slower than imagecopyresampled): http://www.exorithm.com/algorithm/view/scale_image Link to comment https://forums.phpfreaks.com/topic/230612-png-transparency-issue-with-gd/#findComment-1187429 Share on other sites More sharing options...
WNO Posted March 14, 2011 Author Share Posted March 14, 2011 It is working now. My first code was correct. My issue was in file naming (outside of this script). My image url kept pointing to the original thumbnail with the background instead of the new one being created (which had been renamed). Thanks for the help though... Link to comment https://forums.phpfreaks.com/topic/230612-png-transparency-issue-with-gd/#findComment-1187443 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.