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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
php获取某个目录大小的代码
Sep 10 PHP
PHP 上传文件大小限制
Jul 05 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
PHP操作Memcache实例介绍
Jun 14 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
php实现36进制与10进制转换功能示例
Jan 10 PHP
PHP微商城开源代码实例
Mar 27 PHP
PHP常用header头定义代码示例汇总
Aug 29 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP 加密解密内部算法
2010/04/22 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
python递归实现快速排序
2018/08/18 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
学习Python列表的基础知识汇总
2020/03/10 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
python实现计算器简易版
2020/12/17 Python
html5 标签
2009/07/16 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
财务管理专业自荐信范文
2013/12/24 职场文书
高中生职业规划范文
2014/03/09 职场文书
培根随笔读书笔记
2015/07/01 职场文书
优秀志愿者感言
2015/08/01 职场文书