Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中合并两个透明图像时出现异常结果_Php_Gd_Alpha Transparency - Fatal编程技术网

在php中合并两个透明图像时出现异常结果

在php中合并两个透明图像时出现异常结果,php,gd,alpha-transparency,Php,Gd,Alpha Transparency,我想知道我是否做错了什么,或者这是否是我将得到的好结果。左侧的两个PNG均为95x111。机器人的图像周围有5倍左右的透明像素填充,但它们合并时似乎会产生问题 $avatar = imagecreatefrompng("../guy.png"); $borderImg = imagecreatefrompng("../frame.png"); imagealphablending( $borderImg, false ); imagesavealpha( $borderImg, tru

我想知道我是否做错了什么,或者这是否是我将得到的好结果。左侧的两个PNG均为95x111。机器人的图像周围有5倍左右的透明像素填充,但它们合并时似乎会产生问题

 $avatar = imagecreatefrompng("../guy.png");
 $borderImg = imagecreatefrompng("../frame.png");

 imagealphablending( $borderImg, false );
 imagesavealpha( $borderImg, true );

 imagecopyresampled($avatar,$borderImg,  0, 0, 0, 0, 95, 111,95, 111);
 imagepng($avatar, $newfilenameBig); 
我尝试了我能想到的ImageAlpha混合和imagesavealpha的每一种组合。当我将$avatar设置为imagesavealpa=true时,它甚至不会将图像显示为全部,只是显示帧。这不是很奇怪吗? 这就是我使用PHP GD所能做到的吗


更新:在PS中使用24位模式手动创建两个图像时,可以获得所需的结果。有没有一种方法可以使用imagecopy或类似的工具来实现这一点?

请尝试以下代码,因为它工作正常

$width = 95; $height = 111; $base_image = imagecreatefrompng("../guy.png"); $top_image = imagecreatefrompng("../frame.png"); imagesavealpha($top_image, false); imagealphablending($top_image, false); imagecopy($base_image, $top_image, 0, 0, 0, 0, $width, $height); imagepng($base_image, "merged.png");
请尝试以下代码,它工作正常

$width = 95; $height = 111; $base_image = imagecreatefrompng("../guy.png"); $top_image = imagecreatefrompng("../frame.png"); imagesavealpha($top_image, false); imagealphablending($top_image, false); imagecopy($base_image, $top_image, 0, 0, 0, 0, $width, $height); imagepng($base_image, "merged.png");
请看我的答案:并检查它是否解决了问题谢谢你的帮助。所以,如果我理解正确,我使用save for web png24将frame.png重新保存在PS中,但仍然不走运。imagemagik支持合并两个PNG-24还是有其他解决方案?现在,我正在使用css将头像设置为一个div的背景,并将框架置于其上方。您是否尝试为两幅图像启用AlphaBlend和savealpha?现在,你的示例只显示你在为borderImg做这些。是的,当我为头像打开这些时,结果图像只是边界,这很奇怪,因为这应该可以工作。这是否意味着化身图像的阿尔法通道某种程度上被破坏了?我做了很多GD的事情,比如缩放和裁剪来创建图像。另外,我刚刚发现,当我将avatar.png保存到我的HD时,边框显示为黑色。也许我应该重温一下我是如何创造它的。切题地说,这是一种简洁的艺术。请看我的答案:并检查它是否解决了问题谢谢你的帮助。所以,如果我理解正确,我使用save for web png24将frame.png重新保存在PS中,但仍然不走运。imagemagik支持合并两个PNG-24还是有其他解决方案?现在,我正在使用css将头像设置为一个div的背景,并将框架置于其上方。您是否尝试为两幅图像启用AlphaBlend和savealpha?现在,你的示例只显示你在为borderImg做这些。是的,当我为头像打开这些时,结果图像只是边界,这很奇怪,因为这应该可以工作。这是否意味着化身图像的阿尔法通道某种程度上被破坏了?我做了很多GD的事情,比如缩放和裁剪来创建图像。另外,我刚刚发现,当我将avatar.png保存到我的HD时,边框显示为黑色。也许我应该重温一下我是如何创造它的。从一个切题的角度来说——整洁的艺术。