在做图片转换为ICO工具的时候,发现png图片转化后背景一直是黑色的,通过不断搜索和询问终于解决问题。
在图片采样之前增加以下三句代码:
imagesavealpha($im, true);
imagealphablending($resize_im, false);//不合并颜色,直接用$im图像颜色替换,包括透明色;
imagesavealpha($resize_im, true);//不要丢了$resize_im图像的透明色;
完整的代码如下:
if($im = @imagecreatefrompng($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromgif($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromjpeg($_FILES['upimage']['tmp_name'])){ $imginfo = @getimagesize($_FILES['upimage']['tmp_name']); if(!is_array($imginfo)){ echo "图形格式错误!"; } switch($_POST['size']){ case 1; $resize_im = @imagecreatetruecolor(16,16); $size = 16; break; case 2; $resize_im = @imagecreatetruecolor(32,32); $size = 32; break; case 3; $resize_im = @imagecreatetruecolor(48,48); $size = 48; break; case 4; $resize_im = @imagecreatetruecolor(64,64); $size = 64; break; default; $resize_im = @imagecreatetruecolor(32,32); $size = 32; break; } imagesavealpha($im, true); imagealphablending($resize_im, false);//不合并颜色,直接用$im图像颜色替换,包括透明色; imagesavealpha($resize_im, true);//不要丢了$resize_im图像的透明色; imagecopyresampled($resize_im,$im,0,0,0,0,$size,$size,$imginfo[0],$imginfo[1]);
发表评论