如何合并两个 PNG(一个具有透明度)?
How to merge two PNGs (one with transparency)?
我希望能够用个人资料图片创建一张图片,并在上面叠加另一张图片。
(我要叠加的图片)
个人资料图片具有不同的宽度和高度,我想让 PHP 脚本 "stretch" 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);
}
我想把红色"Banned"放在上面。
这就是我想要的结果:
(原创)
(已编辑)
你能帮我吗?
是的,这可行,但您可以根据需要检查和调整坐标。
$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);
输出 1
答案 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');
输出 2
我希望能够用个人资料图片创建一张图片,并在上面叠加另一张图片。
(我要叠加的图片)
个人资料图片具有不同的宽度和高度,我想让 PHP 脚本 "stretch" 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);
}
我想把红色"Banned"放在上面。
这就是我想要的结果:
(原创)
(已编辑)
你能帮我吗?
是的,这可行,但您可以根据需要检查和调整坐标。
$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);
输出 1
答案 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');
输出 2