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 中include()与require()的对比
Oct 09 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
php getsiteurl()函数
Sep 05 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
php unlink()函数使用教程
Jul 12 PHP
PHP使用SOAP调用API操作示例
Dec 25 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
浅析vue-router原理
2018/10/19 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
python删除文件示例分享
2014/01/28 Python
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python操作列表的函数使用代码详解
2017/12/28 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python类继承和多态原理解析
2020/02/05 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
sklearn的predict_proba使用说明
2020/06/28 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
公司年底活动方案
2014/08/17 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
大学军训决心书
2015/02/05 职场文书
2015年导购员工作总结
2015/04/25 职场文书
java基础——多线程
2021/07/03 Java/Android
Python+Tkinter制作专属图形化界面
2022/04/01 Python