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


Posted in PHP onNovember 25, 2017

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

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

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

实例如下所示:

<?php 
 /** 
 * 图片合并 
 **/ 
 
 $pic_list  = array( 
  'img2.png', 
  'img2.png', 
  'logo.png', 
  'logo.png', 
  'logo.png', 
  'img2.png', 
  'img2.png', 
  'img2.png', 
  'img2.png' 
 ); 
  
 $pic_list = array_slice($pic_list, 0, 9); // 只操作前9个图片 
 
 $bg_w = 150; // 背景图片宽度 
 $bg_h = 150; // 背景图片高度 
 
 $background = imagecreatetruecolor($bg_w,$bg_h); // 背景图片 
 $color = imagecolorallocate($background, 202, 201, 201); // 为真彩色画布创建白色背景,再设置为透明 
 imagefill($background, 0, 0, $color); 
 imageColorTransparent($background, $color); 
 
 $pic_count = count($pic_list); 
 $lineArr = array(); // 需要换行的位置 
 $space_x = 3; 
 $space_y = 3; 
 $line_x = 0; 
 switch($pic_count) { 
 case 1: // 正中间 
  $start_x = intval($bg_w/4); // 开始位置X 
  $start_y = intval($bg_h/4); // 开始位置Y 
  $pic_w = intval($bg_w/2); // 宽度 
  $pic_h = intval($bg_h/2); // 高度 
  break; 
 case 2: // 中间位置并排 
  $start_x = 2; 
  $start_y = intval($bg_h/4) + 3; 
  $pic_w = intval($bg_w/2) - 5; 
  $pic_h = intval($bg_h/2) - 5; 
  $space_x = 5; 
  break; 
 case 3: 
  $start_x = 40; // 开始位置X 
  $start_y = 5; // 开始位置Y 
  $pic_w = intval($bg_w/2) - 5; // 宽度 
  $pic_h = intval($bg_h/2) - 5; // 高度 
  $lineArr = array(2); 
  $line_x = 4; 
  break; 
 case 4: 
  $start_x = 4; // 开始位置X 
  $start_y = 5; // 开始位置Y 
  $pic_w = intval($bg_w/2) - 5; // 宽度 
  $pic_h = intval($bg_h/2) - 5; // 高度 
  $lineArr = array(3); 
  $line_x = 4; 
  break; 
 case 5: 
  $start_x = 30; // 开始位置X 
  $start_y = 30; // 开始位置Y 
  $pic_w = intval($bg_w/3) - 5; // 宽度 
  $pic_h = intval($bg_h/3) - 5; // 高度 
  $lineArr = array(3); 
  $line_x = 5; 
  break; 
 case 6: 
  $start_x = 5; // 开始位置X 
  $start_y = 30; // 开始位置Y 
  $pic_w = intval($bg_w/3) - 5; // 宽度 
  $pic_h = intval($bg_h/3) - 5; // 高度 
  $lineArr = array(4); 
  $line_x = 5; 
  break; 
 case 7: 
  $start_x = 53; // 开始位置X 
  $start_y = 5; // 开始位置Y 
  $pic_w = intval($bg_w/3) - 5; // 宽度 
  $pic_h = intval($bg_h/3) - 5; // 高度 
  $lineArr = array(2,5); 
  $line_x = 5; 
  break; 
 case 8: 
  $start_x = 30; // 开始位置X 
  $start_y = 5; // 开始位置Y 
  $pic_w = intval($bg_w/3) - 5; // 宽度 
  $pic_h = intval($bg_h/3) - 5; // 高度 
  $lineArr = array(3,6); 
  $line_x = 5; 
  break; 
 case 9: 
  $start_x = 5; // 开始位置X 
  $start_y = 5; // 开始位置Y 
  $pic_w = intval($bg_w/3) - 5; // 宽度 
  $pic_h = intval($bg_h/3) - 5; // 高度 
  $lineArr = array(4,7); 
  $line_x = 5; 
  break; 
 } 
 foreach( $pic_list as $k=>$pic_path ) { 
  $kk = $k + 1; 
  if ( in_array($kk, $lineArr) ) { 
   $start_x = $line_x; 
   $start_y = $start_y + $pic_h + $space_y; 
  } 
  $pathInfo = pathinfo($pic_path); 
  switch( strtolower($pathInfo['extension']) ) { 
   case 'jpg': 
   case 'jpeg': 
    $imagecreatefromjpeg = 'imagecreatefromjpeg'; 
   break; 
   case 'png': 
    $imagecreatefromjpeg = 'imagecreatefrompng'; 
   break; 
   case 'gif': 
   default: 
    $imagecreatefromjpeg = 'imagecreatefromstring'; 
    $pic_path = file_get_contents($pic_path); 
   break; 
  } 
  $resource = $imagecreatefromjpeg($pic_path); 
  // $start_x,$start_y copy图片在背景中的位置 
  // 0,0 被copy图片的位置 
  // $pic_w,$pic_h copy后的高度和宽度 
  imagecopyresized($background,$resource,$start_x,$start_y,0,0,$pic_w,$pic_h,imagesx($resource),imagesy($resource)); // 最后两个参数为原始图片宽度和高度,倒数两个参数为copy时的图片宽度和高度 
  $start_x = $start_x + $pic_w + $space_x; 
 } 
 
 header("Content-type: image/jpg"); 
 imagejpeg($background);
 imagegif($background, "./hero_gam.png"); 
  
?>

以上这篇php图片合成方法(多张图片合成一张)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
输出控制类
Oct 09 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
PHP微信开发之有道翻译
Jun 23 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 #PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 #PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 #PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 #PHP
thinkPHP通用控制器实现方法示例
Nov 23 #PHP
PHP substr()函数参数解释及用法讲解
Nov 23 #PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 #PHP
You might like
PHP 程序员的调试技术小结
2009/11/15 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
python远程登录代码
2008/04/29 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python金融数据可视化汇总
2017/11/17 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Django之路由层的实现
2019/09/09 Python
python实现按首字母分类查找功能
2019/10/31 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
Python实现结构体代码实例
2020/02/10 Python
详解python中的异常捕获
2020/12/15 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
总经理岗位职责范本
2014/02/02 职场文书
工程质量月活动方案
2014/02/19 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
社区班子对照检查材料
2014/08/27 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
现实表现证明材料
2015/06/19 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis