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 相关文章推荐
PHP文本数据库的搜索方法
Oct 09 PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
PHP基础知识回顾
Aug 16 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
基础的WordPress插件制作教程
Nov 24 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 09 PHP
PHP 时间处理类Carbon
May 20 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
简单谈谈Python中的闭包
2016/11/30 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
全球虚拟主机商:HostGator
2017/02/06 全球购物
广告词串烧
2014/03/19 职场文书
工程承包协议书
2014/04/22 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
2014年共青团工作总结
2014/12/10 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书