php实现微信中的图片合并

来源:互联网 发布:重庆网络推广方式 编辑:程序博客网 时间:2024/04/27 16:38
  1. <?php  
  2.     /** 
  3.     * 图片合并 
  4.     **/  
  5.   
  6.     $pic_list       = array(  
  7.         'http://img104.job1001.com/upload/faceimg/20140305/5176438df39012880af6da07c725d91f_1394001874.jpeg',  
  8.         'http://img104.job1001.com/upload/faceimg/20131121/90d8df2365743b0830f57ed3090c3311_1385026102.gif',  
  9.         'http://img104.job1001.com/upload/faceimg/20131121/47e5646b82141486ccd6d490cd1c6670_1385026071.gif',  
  10.         'http://img104.job1001.com/upload/faceimg/20130820/ec2135080510a11fd163d1ebc487ea84_1376968031.png',  
  11.         'http://img104.job1001.com/upload/faceimg/20130322/427f52f63193a2ffe2ef8f4e9130c74a_1363919801.jpeg',  
  12.         'http://img104.job1001.com/upload/faceimg/20130916/65ae25bf4cf82eae8ba26d1f9e67b3ae_1379298441.jpeg',  
  13.         'http://img104.job1001.com/upload/faceimg/20131126/71c2cff7d0105602513f74568c1967ab_1385448526.gif',  
  14.         'http://img104.job1001.com/upload/faceimg/20131121/375d6cf0ce7bd3b21a48eb8e6bafa2c8_1385026044.gif',  
  15.         'http://img104.job1001.com/upload/faceimg/20131121/d5f4380f337f0b0a96592f80f83d20e5_1385026012.gif'  
  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.       
  136. ?> 
0 0