2

我想知道我是否做错了什么,或者这是否与我将得到的结果一样好。左边的两个 PNG 都是 95x111。机器人的图像周围有 5px 左右的透明像素填充,但是当它们合并时似乎会导致问题?

在此处输入图像描述

 $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); 

我已经尝试了所有我能想到的 imagealphablending 和 imagesavealpha 的组合。当我将 $avatar 设置为 imagesavealpa=true 时,它​​甚至不显示图像,只显示框架。这看起来不奇怪吗?这是我要使用 PHP GD 吗?

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

4

1 回答 1

0

试试下面的代码它工作正常。

    $宽度 = 95;
    $高度 = 111;

    $base_image = imagecreatefrompng("../guy.png");
    $top_image = imagecreatefrompng("../frame.png");

    图像保存阿尔法($top_image,假);
    imagealphablending($top_image, false);
    imagecopy($base_image, $top_image, 0, 0, 0, 0, $width, $height);
    imagepng($base_image, "merged.png");

于 2012-03-23T16:36:50.450 回答