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));做过类似的,给个解决方案吧...

解决方案 »

  1.   

    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);
      

  2.   

    艾玛,吓死我了!
    我的要求是一张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);
    不知道哪里的问题....
      

  3.   


    imagejpeg生成的是jpg格式的图片。imgpng生成的才是png格式的图片。你的之所以出现”怪“代码,是因为没有加上header,所以被当做二进制数据直接输出了。
    前面加上header("content-type:image/png");
    然后用imgpng生成图片。
      

  4.   

    也不一定
    也可能是 BOM 头的关系
      

  5.   

    imagejpeg($im2, '图片文件名');
      

  6.   


        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);昨天研究了一下午,终于搞定了