在做图片转换为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]);

点击查看效果

打赏

你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。