在php中合并两个透明图像时出现异常结果
我想知道我是否做错了什么,或者这是否是我将得到的好结果。左侧的两个PNG均为95x111。机器人的图像周围有5倍左右的透明像素填充,但它们合并时似乎会产生问题在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
$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时,边框显示为黑色。也许我应该重温一下我是如何创造它的。从一个切题的角度来说——整洁的艺术。