所以我想要这个结果 http://i.stack.imgur.com/0fTBc.png
但我尝试的所有代码都是这样: http://i.stack.imgur.com/8wVoA.png
任何人都可以帮助我吗?
我的PHP代码:
$im = imagecreatetruecolor(480, 320);
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($im, $black);
$image = imagecreatefromstring(file_get_contents($new_file));
imagecopymerge($im, $image, 0, 0, 0, 0, 480, 320, 100);
$png_to_merge = "./images/video_top70.png";
$frame = imagecreatefromstring(file_get_contents($png_to_merge));
imagecopy($im, $frame, 0, 0, 0, 0, 480, 320);
$img_final = "./images/top.png";
imagepng($im,$img_final);
答案 0 :(得分:0)
你的水印' png已经具有透明度,无需选择透明色。 注释行
// $black = imagecolorallocate($im, 0, 0, 0);
// imagecolortransparent($im, $black);
而且,对于未来,选择透明的颜色你要透明:)对于给定的图像,黑色的选择不是明智的 - 使用alpha通道。
结果
裁剪结果
$im = imagecreatetruecolor(480, 320);
$im2 = imagecreatetruecolor(480, 270);
$image = imagecreatefromstring(file_get_contents('img1.png'));
imagecopymerge($im, $image, 0, 25, 0, 0, 480, 320, 100);
$frame = imagecreatefromstring(file_get_contents('img2.png'));
imagecopy($im, $frame, 0, 0, 0, 0, 480, 320);
imagecopyresampled($im2, $im, 0, 0, 0, 25, 480, 270, 480, 270);
header('Content-Type: image/png');
imagepng($im2);
imagedestroy($im2);
我们得到了
好的,这就是你需要的,使用alpha通道
$im = imagecreatetruecolor(480, 320);
$c = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagesavealpha($im, true);
imagefill($im, 0, 0, $c);
imagecopymerge($im, imagecreatefromstring(file_get_contents('img1.png')),
0, 25, 0, 0, 480, 275, 100);
imagecopy($im, imagecreatefromstring(file_get_contents('img2.png')),
0, 0, 0, 0, 480, 320);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
结果与第二张图片相同,但高度为320像素。