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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
PHP输出日历表代码实例
Mar 27 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
php生成无限栏目树
2017/03/16 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
python中sys.argv参数用法实例分析
2015/05/20 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
女性时尚网购:Chic Me
2019/07/30 全球购物
农民入党思想汇报
2014/01/03 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
一年级学生期末评语
2014/04/21 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
销售经理工作检讨书
2015/02/19 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
六年级作文之关于梦
2019/10/22 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python