当某些图像放入其中时,PHP GD头像会变为空白

时间:2012-05-31 17:48:35

标签: php image gd

我正在创建一个头像网站。我的一个用户遇到了问题...他们的头像是空白的。他们的化身:

http://www.world2build.com/API/Avatar.aspx?ID=1586

他们的头像上的项目在没有这个项目的情况下工作正常,但是当他们把这个主体放在第一层时,它就变成了空白:

http://node1.world2build.com/Body/13245107086553.png

然而,如果我将Body移动到顶层,它会显示......但我必须将身体保持在底层,以确保它显示为正常的头像。为什么这会使PNG作为底层变成空白?我没有看到问题。

代码($ vars是一个包含文件链接的数组):

function merge_image($base, $img){
    $width = imagesx($img); 
    $height = imagesy($img); 
    imagecopy($base,$img,0,0,0,0,$width,$height);
}

$base = imagecreatefrompng($vars[0]);
for($i=1; $i<count($vars); $i++){
    merge_image($base, imagecreatefrompng($vars[$i]));
    //echo $vars[$i]."<BR>";
} 

header("Content-Type: image/png"); 
imagesavealpha($base, true); 
imagepng($base); 

注意:第7行的$ base是身体图像(导致问题的图像)。

工作头像是:http://www.world2build.com/API/Avatar.aspx?ID=1602(它使用与上面提供的身体不同的身体)

1 个答案:

答案 0 :(得分:0)

我通过用此替换代码并将$ base转换为空白图像来修复此问题。

$base = imagecreatefrompng("../Images/BlankTransparentImage.png");
for($i=0; $i<count($vars); $i++){
    merge_image($base, imagecreatefrompng($vars[$i]));
    //echo $vars[$i]."<BR>";
} 

(注意我在for循环中将$ i = 1更改为$ i = 0以包含正文。)