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实现批量查询清除一句话后门的代码
Jan 20 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
PHP实现的贪婪算法实例
Oct 17 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
Oct 15 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
PHP使用QR Code生成二维码实例
Jul 07 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
jQuery实现弹出层效果
2019/12/10 jQuery
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
python查询sqlite数据表的方法
2015/05/08 Python
Python 专题一 函数的基础知识
2017/03/16 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
养殖项目策划书范文
2014/01/13 职场文书
九年级历史教学反思
2014/01/27 职场文书
护士岗位职责
2014/02/16 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
公司合并协议书范本
2014/09/30 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js