当前位置:首页 > PHP教程 > php图像处理 > 列表

php图片合成方法(多张图片合成一张)

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-21 20:19:23 浏览: 评论:0 

下面小编就为大家分享一篇php图片合成方法(多张图片合成一张),具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧

1.多张图片合成一张比如:

图片合成,可以显示在浏览器上面同时保存到文件夹下面

实例如下所示:

  1. <?php 
  2.  /**  
  3.  * 图片合并  
  4.  **/  
  5.    
  6.  $pic_list  = array(  
  7.   'img2.png',  
  8.   'img2.png',  
  9.   'logo.png',  
  10.   'logo.png',  
  11.   'logo.png',  
  12.   'img2.png',  
  13.   'img2.png',  
  14.   'img2.png',  
  15.   'img2.png'  
  16.  );  
  17.     
  18.  $pic_list = array_slice($pic_list, 0, 9); // 只操作前9个图片  
  19.    
  20.  $bg_w = 150; // 背景图片宽度  
  21.  $bg_h = 150; // 背景图片高度  
  22.    
  23.  $background = imagecreatetruecolor($bg_w,$bg_h); // 背景图片  
  24.  $color = imagecolorallocate($background, 202, 201, 201); // 为真彩色画布创建白色背景,再设置为透明  
  25.  imagefill($background, 0, 0, $color);  
  26.  imageColorTransparent($background$color);  
  27.    
  28.  $pic_count = count($pic_list);  
  29.  $lineArr = array(); // 需要换行的位置  
  30.  $space_x = 3;  
  31.  $space_y = 3;  
  32.  $line_x = 0;  
  33.  switch($pic_count) {  
  34.  case 1: // 正中间  
  35.   $start_x = intval($bg_w/4); // 开始位置X  
  36.   $start_y = intval($bg_h/4); // 开始位置Y  
  37.   $pic_w = intval($bg_w/2); // 宽度  
  38.   $pic_h = intval($bg_h/2); // 高度  
  39.   break;  
  40.  case 2: // 中间位置并排  
  41.   $start_x = 2;  
  42.   $start_y = intval($bg_h/4) + 3;  
  43.   $pic_w = intval($bg_w/2) - 5;  
  44.   $pic_h = intval($bg_h/2) - 5;  
  45.   $space_x = 5;  
  46.   break;  
  47.  case 3:  
  48.   $start_x = 40; // 开始位置X  
  49.   $start_y = 5; // 开始位置Y  
  50.   $pic_w = intval($bg_w/2) - 5; // 宽度  
  51.   $pic_h = intval($bg_h/2) - 5; // 高度  
  52.   $lineArr = array(2);  
  53.   $line_x = 4;  
  54.   break;  
  55.  case 4:  
  56.   $start_x = 4; // 开始位置X  
  57.   $start_y = 5; // 开始位置Y  
  58.   $pic_w = intval($bg_w/2) - 5; // 宽度  
  59.   $pic_h = intval($bg_h/2) - 5; // 高度  
  60.   $lineArr = array(3);  
  61.   $line_x = 4;  
  62.   break;  
  63.  case 5:  
  64.   $start_x = 30; // 开始位置X  
  65.   $start_y = 30; // 开始位置Y  
  66.   $pic_w = intval($bg_w/3) - 5; // 宽度  
  67.   $pic_h = intval($bg_h/3) - 5; // 高度  
  68.   $lineArr = array(3);  
  69.   $line_x = 5;  
  70.   break;  
  71.  case 6:  
  72.   $start_x = 5; // 开始位置X  
  73.   $start_y = 30; // 开始位置Y  
  74.   $pic_w = intval($bg_w/3) - 5; // 宽度  
  75.   $pic_h = intval($bg_h/3) - 5; // 高度  
  76.   $lineArr = array(4);  
  77.   $line_x = 5;  
  78.   break;  
  79.  case 7:  
  80.   $start_x = 53; // 开始位置X  
  81.   $start_y = 5; // 开始位置Y  
  82.   $pic_w = intval($bg_w/3) - 5; // 宽度  
  83.   $pic_h = intval($bg_h/3) - 5; // 高度  
  84.   $lineArr = array(2,5);  
  85.   $line_x = 5;  
  86.   break;  
  87.  case 8:  
  88.   $start_x = 30; // 开始位置X  
  89.   $start_y = 5; // 开始位置Y  
  90.   $pic_w = intval($bg_w/3) - 5; // 宽度  
  91.   $pic_h = intval($bg_h/3) - 5; // 高度  
  92.   $lineArr = array(3,6);  
  93.   $line_x = 5;  
  94.   break;  
  95.  case 9:  
  96.   $start_x = 5; // 开始位置X  
  97.   $start_y = 5; // 开始位置Y  
  98.   $pic_w = intval($bg_w/3) - 5; // 宽度  
  99.   $pic_h = intval($bg_h/3) - 5; // 高度  
  100.   $lineArr = array(4,7);  
  101.   $line_x = 5;  
  102.   break;  
  103.  }  
  104.  foreach$pic_list as $k=>$pic_path ) {  
  105.   $kk = $k + 1;  
  106.   if ( in_array($kk$lineArr) ) {  
  107.    $start_x = $line_x;  
  108.    $start_y = $start_y + $pic_h + $space_y;  
  109.   }  
  110.   $pathInfo = pathinfo($pic_path);  
  111.   switchstrtolower($pathInfo['extension']) ) {  
  112.    case 'jpg':  
  113.    case 'jpeg':  
  114.     $imagecreatefromjpeg = 'imagecreatefromjpeg';  
  115.    break;  
  116.    case 'png':  
  117.     $imagecreatefromjpeg = 'imagecreatefrompng';  
  118.    break;  
  119.    case 'gif':  
  120.    default:  
  121.     $imagecreatefromjpeg = 'imagecreatefromstring';  
  122.     $pic_path = file_get_contents($pic_path);  
  123.    break;  
  124.   }  
  125.   $resource = $imagecreatefromjpeg($pic_path);  
  126.   // $start_x,$start_y copy图片在背景中的位置  
  127.   // 0,0 被copy图片的位置  
  128.   // $pic_w,$pic_h copy后的高度和宽度  
  129.   imagecopyresized($background,$resource,$start_x,$start_y,0,0,$pic_w,$pic_h,imagesx($resource),imagesy($resource)); // 最后两个参数为原始图片宽度和高度,倒数两个参数为copy时的图片宽度和高度  
  130.   $start_x = $start_x + $pic_w + $space_x;  
  131.  }  
  132.    
  133.  header("Content-type: image/jpg");  
  134.  imagejpeg($background); 
  135.  imagegif($background"./hero_gam.png");  
  136.     
  137. ?>

Tags: php图片合成

分享到: