所以我从PHP Doc创建了一个脚本,并在SO上创建了一些有用的线程/建议,并提出了这个:
$filename = time();
$glassurl = $_GET['GlassImg'];
$frameurl = $_GET['FrameImg'];
$handleurl = "images/helpbutton.png";
$handleurl2 = "images/helpbutton.png";
$glassimg = imagecreatefromjpeg($glassurl);
$frameimg = imagecreatefromgif($frameurl);
$handleimg = imagecreatefrompng($handleurl);
$handleimg2 = imagecreatefrompng($handleurl2);
$frame_x = imagesx($frameimg);
$frame_y = imagesy($frameimg);
imagecopymerge($glassimg, $frameimg, 0, 0, 0, 0, $frame_x, $frame_y, 100);
imagecolortransparent($handleimg, imagecolorat($handleimg, 0, 0));
imagecolortransparent($handleimg2, imagecolorat($handleimg2, 0, 0));
$handle_x = imagesx($handleimg);
$handle_y = imagesy($handleimg);
imagecopymerge($glassimg, $handleimg, 460, 150, 0, 0, $handle_x, $handle_y, 100);
$handle2_x = imagesx($handleimg2);
$handle2_y = imagesy($handleimg2);
imagecopymerge($glassimg, $handleimg2, 5, 5, 0, 0, $handle2_x, $handle2_y, 100);
// Output and free from memory
imagepng($glassimg, "uploads/$filename.png");
imagedestroy($glassimg);
imagedestroy($frameimg);
imagedestroy($handleimg);
imagedestroy($handleimg2);
它几乎完美无缺,但有一个小问题。 helpbutton.png只是一个占位符图像,可以看到我可以定位图像并合并它们最终会产生一个黑色的固体投影,导致图像看起来很糟糕。
这应该是这样的:
这是合并后的结果:
我已经研究了很多图像控件,包括混合等等,但似乎都没有影响它。有谁知道如何控制不应该在PHP中暗淡阴影?
答案 0 :(得分:0)
imagesavealpha($res, true)
&当您使用Alpha通道保存png图像时,imagealphablending($res, false)
会派上用场(特别是当您从jpeg打开时)。
修改:试试这个:
$glassimg = imagecreatefromjpeg($glassurl);
imagealphablending($glassimg, false);
imagesavealpha($glassimg, true)
$frameimg = imagecreatefromgif($frameurl);
imagealphablending($frameimg, false);
imagesavealpha($frameimg, true)
$handleimg = imagecreatefrompng($handleurl);
imagealphablending($handleimg, false);
imagesavealpha($handleimg, true)
$handleimg2 = imagecreatefrompng($handleurl2);
imagealphablending($handleimg2, false);
imagesavealpha($handleimg2, true)