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的输入输出流
Feb 14 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
PHP中浮点数计算比较及取整不准确的解决方法
Jan 09 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
laravel5 Eloquent 实现事务方式
Oct 21 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 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去除html标记的原生函数详解
2015/01/27 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
Yii框架安装简明教程
2020/05/15 PHP
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
Jquery的Ajax技术使用方法
2019/01/21 jQuery
VUE实现吸底按钮
2021/03/04 Vue.js
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中的lstrip()方法使用简介
2015/05/19 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
后勤人员自我评价怎么写
2013/09/19 职场文书
农业开发项目建议书
2014/05/16 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
golang slice元素去重操作
2021/04/30 Golang
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
JavaScript获取URL参数的方法分享
2022/04/07 Javascript
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers