Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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-GD Png透明图像变黑_Php_Png_Alpha Transparency_Php Gd - Fatal编程技术网

PHP-GD Png透明图像变黑

PHP-GD Png透明图像变黑,php,png,alpha-transparency,php-gd,Php,Png,Alpha Transparency,Php Gd,我在我的一个项目中使用JCrop(用户必须裁剪他的脸),并将坐标和源图像发送给PHP处理程序。流程应如下所示:根据收到的坐标,处理程序裁剪图像,并使用imagecopy()将新创建的图像(在我的示例中为90x90)放置在使用ImageCreateTrueColor()创建的空布局上。到目前为止,这一切正常,但下一步是:我必须加载一个带有透明部分的png图像。(我希望我解释得足够清楚)它们的宽度和高度与前面的布局相同,上面有交叉区域。最后一步是再次使用imagecopy()将png放置在布局上,并

我在我的一个项目中使用JCrop(用户必须裁剪他的脸),并将坐标和源图像发送给PHP处理程序。流程应如下所示:根据收到的坐标,处理程序裁剪图像,并使用
imagecopy()
将新创建的图像(在我的示例中为90x90)放置在使用
ImageCreateTrueColor()创建的空布局上。到目前为止,这一切正常,但下一步是:我必须加载一个带有透明部分的png图像。(我希望我解释得足够清楚)它们的宽度和高度与前面的布局相同,上面有交叉区域。最后一步是再次使用
imagecopy()
将png放置在布局上,并最终生成用户制作的裁剪覆盖透明部分的模板。这是我的密码:

$targ_w = $targ_h = 90;
$jpeg_quality = 100;
$src = $_POST['s'];
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );
imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
$targ_w,$targ_h,$_POST['w'],$_POST['h']);
$layout = ImageCreateTrueColor(459,683);
imagecopy($layout, $dst_r, 263, 249, 0, 0, 90, 90);
$template = 'template.png';
$src_r = imagecreatefrompng($template);
$background = imagecolorallocate($src_r, 255, 255, 255);
imagecolortransparent($src_r, $background);
imagealphablending($src_r, false);
imagesavealpha($src_r, true);
imagecopy($layout, $src_r, 0, 0, 0, 0, 459, 683);
header('Content-type: image/png');
imagepng($src_r);
我试过很多在网上找到的东西,但似乎都不管用。
编辑:问题是透明部分是黑色的,而不是剪切面。我真的需要一些建议。提前谢谢。

我以前写过一个类,它能解决你的问题吗


以下是您在$src\u r上禁用alpha混合的任何原因?我以前尝试过使用alpha混合true,但仍然不起作用。示例链接已断开。