Home > Article > Backend Development > GD 函数合成图片问题(一张jpg,一张png)
RT:
请问用php怎么能合成两张图片呢?
一张是png 透明的底图,另一张是jpg 图片
现在想让jpg的图片合成到png的底图上面,成为一张新的图片,如何实现呢?
另外问下,是不是合成的图片要尺寸一样大呢?还是底图可以大点的?
本人在网上也找了一些方法,但好像都不行
$path_1 = "topic_assets/522592b5d61cb_ip4.jpg"; $path_2 = "topic_assets/topic_border_android.png"; //echo $path_1; $image=imagecreatefromjpeg($path_1); $wm=imagecreatefrompng($path_2); $im=imagecreatetruecolor(imagesx($image),imagesy($image)); imagecopy($im,$image,0,0,0,0,imagesx($image),imagesy($image)); imagecopy($im,$wm,0,0,0,0,imagesx($wm),imagesy($wm));
GD 提供了很多函数,你总得都去试试吧!比如这个怎么样?
$t1 = 'http://avatar.csdn.net/1/C/9/1_mahuatengbc.jpg';$t2 = 'http://avatar.csdn.net/2/5/B/1_yykr1987.jpg';$im1 = imagecreatefromjpeg($t1);$im2 = imagecreatefromjpeg($t2);imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63);imagejpeg($im1);
GD 提供了很多函数,你总得都去试试吧!比如这个怎么样?
$t1 = 'http://avatar.csdn.net/1/C/9/1_mahuatengbc.jpg';$t2 = 'http://avatar.csdn.net/2/5/B/1_yykr1987.jpg';$im1 = imagecreatefromjpeg($t1);$im2 = imagecreatefromjpeg($t2);imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63);imagejpeg($im1);
艾玛,吓死我了!
我的要求是一张jpg ,一张png ,png做底图, 合成的也是png格式的!
按照版主的做法,出现了一大堆奇怪的乱码 ,如下图
我的代码是这样的:
$path_1 = "522592b5d61cb_ip4.jpg"; $path_2 = "topic_border_android.png"; $im1 = imagecreatefromjpeg($path_1); $im2 = imagecreatefrompng($path_2); imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63); imagejpeg($im2); imagedestroy($im2);
艾玛,吓死我了!
我的要求是一张jpg ,一张png ,png做底图, 合成的也是png格式的!
按照版主的做法,出现了一大堆奇怪的乱码 ,如下图
我的代码是这样的:
$path_1 = "522592b5d61cb_ip4.jpg"; $path_2 = "topic_border_android.png"; $im1 = imagecreatefromjpeg($path_1); $im2 = imagecreatefrompng($path_2); imagecopymerge($im1, $im2, 35, 5, 0, 0, imagesx($im2), imagesy($im2), 63); imagejpeg($im2); imagedestroy($im2);
也不一定
也可能是 BOM 头的关系
谢谢楼上的,但是图片没保存下来?
我只是在浏览器看到这个图片了,但是我想在文件夹中找到这个图片,就没有,是合成的图片,不能保存吗?
而且这图片的后面有黑色的阴影,这个能去掉么!
imagejpeg($im2, '图片文件名');
header("content-type:image/png"); //合成两张图片 $targetFileDark="522ec9db6b46b"; $dest = imagecreatefrompng('topic_border_android.png'); $src = imagecreatefromjpeg($targetFileDark."_ip4.jpg"); $newim = imagecreatetruecolor(103,92); $back = imagecolorallocatealpha($newim, 0, 0, 0, 127); imagefilledrectangle($src, 0, 0, 98, 58, $back); imagealphablending($dest, false); imagesavealpha($dest, true); imagecopymerge($dest, $src, 36,11,0,0,imagesx($src), imagesy($src),100); imagepng($dest,$targetFileDark."_android.png"); imagedestroy($dest); imagedestroy($src);