Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 如何合并两个PNG(一个透明)?_Php_Image_Merge_Grayscale - Fatal编程技术网

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

Php 如何合并两个PNG(一个透明)?,php,image,merge,grayscale,Php,Image,Merge,Grayscale,我想能够创建一个图像的档案图片和另一个图像叠加在它上面 (我要覆盖的图像) 配置文件图片具有不同的宽度和高度,我想让PHP脚本在配置文件图片上“拉伸”禁用的png,具体取决于配置文件图片的大小 这是我当前用于创建新图像的脚本,用于将配置文件图片置于灰度: 函数ImageToGreyscale($imagepath,$username){ $image_1_file=$imagepath.$username.'.png'; $image_2_file=$imagepath.'/scripting

我想能够创建一个图像的档案图片和另一个图像叠加在它上面

(我要覆盖的图像)

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

这是我当前用于创建新图像的脚本,用于将配置文件图片置于灰度:

函数ImageToGreyscale($imagepath,$username){
$image_1_file=$imagepath.$username.'.png';
$image_2_file=$imagepath.'/scripting/banked.png';
$image\u 1\u size=getimagesize($image\u 1\u文件);
$image_1_w=$image_1_大小[0];
$image_1_h=$image_1_size[1];
$image\u 1=imagecreatefrompng($image\u 1\u文件);
$image_2=imagecreatefrompng($image_2_文件);
imagealphablending($image_1,true);
imagesavealpha($image_1,true);
图像过滤器($image\u 1,IMG\u FILTER\u灰度);
imagecopy($image_1、$image_2、0、0、0、$image_1_w、$image_1_h);
imagepng($image_1,$imagepath.$username.“'u banked.png”);
图像销毁($image_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);
出局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

您试过这个吗这可能有点麻烦。仅仅用CSS覆盖它不是更简单、更快吗?如果你在网页上显示这个,我不确定,但我相信我做错了什么。这是我目前的结果:我已经用我新的CodeCheck编辑过的答案更新了主帖,现在我按照预期进行了更改,并用其他图像进行了检查