PHP-GD Png透明图像变黑

时间:2013-03-27 15:35:07

标签: php png alpha-transparency php-gd

我在我的一个项目中使用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);

我尝试过在线发现的很多东西,似乎没什么用。 编辑:问题是透明部分是黑色而不是在那里裁剪的脸。我真的需要一些建议。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我之前写了一堂课,会解决你的问题吗? http://www.gdenhancer.com

以下是example