如何合并两个PNG(一个有透明度)?

问题描述 投票:3回答:1

我希望能够创建一个从配置文件图片中创建图像,并在其上覆盖另一个图像。

(图片我想要覆盖)

配置文件图片具有不同的宽度和高度,我想让PHP脚本在配置文件图片上“拉伸”banned.png,具体取决于配置文件图片的大小。

这是我目前用于创建新图像的脚本,以使配置文件图片为灰度:

function ImageToGreyscale($imagepath, $username){
$image_1_file = $imagepath.$username.'.png';    
$image_2_file = $imagepath.'/scripting/banned.png';
$image_1_size = getimagesize($image_1_file);
$image_1_w = $image_1_size[0];
$image_1_h = $image_1_size[1];
$image_1 = imagecreatefrompng($image_1_file);
$image_2 = imagecreatefrompng($image_2_file);
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagefilter($image_1, IMG_FILTER_GRAYSCALE);
imagecopy($image_1, $image_2, 0, 0, 0, 0, $image_1_w, $image_1_h);
imagepng($image_1, $imagepath.$username.'_banned.png');
imagedestroy($image_1);

}

我想把红色的“禁止”放在上面。

这就是我想要的结果:

(原版的)

(编辑)的

你能帮帮我吗?

php image merge grayscale
1个回答
1
投票

是的,这是有效的,但您可以根据需要检查和调整坐标。

$image_1 = imagecreatefrompng('girl.png');
$image_2 = imagecreatefrompng('banned.png');
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagecopy($image_1, $image_2, 100, 100, 100, 100, 100, 100);
imagepng($image_1, 'image_3.png');
imagedestroy($image_1);

OUT 1 enter image description here

答案2作为预期输出,可以尝试其他图像

$image_1_file = 'girl.png';    
$image_2_file = 'banned.png';
$image_1_size = getimagesize($image_1_file);
$image_2_size = getimagesize($image_2_file);
$image_1_w = $image_1_size[0];
$image_1_h = $image_1_size[1];
$image_1 = imagecreatefrompng($image_1_file);
$image_2 = imagecreatefrompng($image_2_file);
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagefilter($image_1, IMG_FILTER_GRAYSCALE);
imagecopyresampled($image_1, $image_2, 0, 0, 0, 0, $image_1_w, $image_1_h, $image_2_size[0], $image_2_size[1]);
imagepng($image_1,'girl_banned.png');

OUT 2 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.