PHP中多张图片合成一张图片例子

今天分享一段PHP中多张图片合成一张图片的代码实现,我们可以在图片合成,水印,九宫格等需求下使用到类似这样的图片合成效果,下面一起来看看例子吧.

例子代码如下:

  1. $imgs = array();
  2. $imgs[0] = '1.jpg';
  3. $imgs[1] = '2.jpg';
  4. $imgs[2] = '3.jpg';
  5. $imgs[3] = '4.jpg';
  6. $target = 'emp.jpg';//背景图片
  7. $target_img = Imagecreatefromjpeg($target);
  8. $source= array();
  9. foreach ($imgs as $k=>$v){
  10. $source[$k]['source'] = Imagecreatefromjpeg($v);
  11. $source[$k]['size'] = getimagesize($v);
  12. }
  13. //imagecopy ($target_img,$source[0]['source'],2,2,0,0,$source[0]['size'][0],$source[0]['size'][1]);
  14. //imagecopy ($target_img,$source[1]['source'],250,2,0,0,$source[1]['size'][0],$source[1]['size'][1]);
  15. $num1=0;
  16. $num=3; //控制列数,一行几列,0为1以此类推。
  17. $tmp=2;
  18. $tmpy=2; //图片之间的间距
  19. for ($i=0; $i<4; $i++){
  20. imagecopy($target_img,$source[$i]['source'],$tmp,$tmpy,0,0,$source[$i]['size'][0],$source[$i]['size'][1]);
  21. $tmp = $tmp+$source[$i]['size'][0];
  22. $tmp = $tmp+5; //开源软件:phpfensi.com
  23. if($i==$num){
  24. $tmpy = $tmpy+$source[$i]['size'][1];
  25. $tmpy = $tmpy+5;
  26. $tmp=2;
  27. $num=$num+3;
  28. }
  29. }
  30. Imagejpeg($target_img,'pin.jpg');
  31. ?>
  32. <img src="pin.jpg">