【问题标题】:PHP-GD Png Transparent Image turn blackPHP-GD PNG透明图像变黑
【发布时间】:2013-03-17 18:32:01
【问题描述】:

我在我的一个项目中使用 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_r 上的 alpha 混合?
  • 我之前尝试过使用 alpha blending true ,但仍然无法正常工作。

标签: php png alpha-transparency php-gd


【解决方案1】:

我以前写过一个类,它会解决你的问题吗? http://www.gdenhancer.com

这里是example

【讨论】:

  • 示例链接已损坏。
猜你喜欢
  • 2015-04-20
  • 2017-11-13
  • 2011-08-20
  • 1970-01-01
  • 2011-08-31
  • 2012-03-06
  • 1970-01-01
  • 2011-03-30
  • 2012-06-25
相关资源
最近更新 更多