我在我的一个项目中使用JCrop(用户已裁剪自己的脸)和&源图像发送坐标的PHP处理程序。该流程应该如下:基于坐标接收处理裁剪图像和使用imagecopy()
把新创建的图像(90x90在我的情况),在与ImageCreateTrueColor()
创建一个空的布局。这工作得很好,但下一步是:我必须加载一个透明部分的PNG图像。 (我希望我解释不够清楚),它具有相同的宽度和高度为以前的布局谁拥有它的croped区域。最后一步是再次使用imagecopy()
把PNG在布局和具有作为最终结果的模板,由用户做出的作物覆盖的透明部分。这里是我的代码:PHP-GD巴透明图像变黑
$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);
我已经尝试了许多事情在网上找到,似乎没有任何工作。 编辑:问题是,透明部分是黑色的,而不是在那里所剪切的脸部。我真的需要一些建议。先谢谢你。
你禁用alpha混合在$ src_r任何理由吗? – 2013-03-27 15:46:59
我已经尝试过与alpha混合真正的,仍然无法正常工作。 – 2013-03-27 15:51:27