如何用php 图片合成一张图片,怎么用PHP把多张图片合成一张
这里的合成是多张图片合成在一张里,不是合成为GIF图片,需要的朋友可以直接下载使用。
图片合成,可以显示在浏览器上面同时保存到文件夹下面
实例如下所示:<?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把多张图片合成一张相关推荐
- PIL实现两张图片合成一张,和图片加文字
PIL实现两张图片合成一张,和图片加文字 文章目录: 一.PIL实现两张图片合成一张 1.方法一: 2.方法二 二.图片添加文字 首先说明一下: (小姐姐是谁,是my sweetheart ,请勿使用 ...
- 如何用计算机进行照片合成,不借助软件怎样将两张照片合成一张?一招教你搞定!...
工作生活中经常要对图片进行排版和合成,很多朋友对于怎么把两张照片合成一张的操作比较陌生,网上虽说有很多工具,但要下载安装,然后还得研究使用方法,这样显得很麻烦.有什么办法不借助软件就可以将两张照片合成 ...
- 实用常识 | 如何将多张图片合成一张gif图片(使用Win10自带工具or利用Photoshop实现)
今天遇到了一个需求,需要将多张图片合成一张gif图片,利用搜索引擎搜来搜去,尝试了很多在线的网页端工具,不过要么是有水印,要么是需付费,而且合成效果也不是很好,找来找去,Win10自带的视频合成工具也 ...
- 什么相片可以两张弄成一张_怎么将两张图片合成一张?
有时候我们需要将两张图片放在一起相比较,但是两张图片相互切换对比起来比较困难,有没有什么办法将两张图片合成一张?方法是肯定有的,而且还是多种多样的,本文就给大家介绍一种对普通用户来说最简单方便快捷的方 ...
- 什么相片可以两张弄成一张_ps怎么把两张图片合成一张
ps怎么把两张图片合成一张 图片应用在我们的生活中十分广泛,Photoshop似乎已经离不开我们的生活.点点滴滴回忆刻印成一张张图片.不过有不少网友却不知道ps怎么把两张图片合成一张,下文将一一为大家 ...
- php 自定义图片排版,照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张...
照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张 相信大家在网上看到过很多类似照片拼图效果的图片,一张图片里面含有多张不同的照片,有的是排列有序,有的则是随意排版,效果看起来也是很美 ...
- android 两张电信_两张图片合成一张app-2张图片合成一张app下载1.2.9 官方安卓版-西西软件下载...
两张图片合成一张app是一款可以把手机上的2张图片合成一张并且看不出是合成的图片的工具,玩转2张图片叠加,可以让你和偶像合照不是梦很逼真的!带你打造与众不同的作品!可以制作双重曝光效果的APP,带你打 ...
- C# 实现多张图片合成一张gif(录屏可能会用到)
使用codeplex的GifCreator来操作 步骤: 一 获取动态链接库Gif.Components.dll 方式1:使用源码编译 第三方的源码地址如下:http://www.codeproje ...
- 如何将两张图片合成一张pdf
在职场工作中,学会处理PDF文件是必不可少的技能.由于PDF文档的特殊性,许多新手在编辑PDF文件时往往不知道从何入手.比如一些非pdf格式的文件,像图片,在使用的时候被指定必须使用pdf格式的,这个 ...
- 微信小程序绘制海报,或者把多张图片合成一张
微信小程序绘制海报,或者把多张图片合成一张,例子 <image style='height:{{mabgh}}px;width:{{mabgw}}px;' class="savepng ...
最新文章
- 深度学习环境配置指南:Pytorch、TensorFlow、Keras
- 关于一个js传值的错误
- Mybatis XML文件的异常
- django时间格式化加时区控制
- FLV播放器 源码二例
- VC6解决托盘菜单不消失
- 支付宝支付-常用支付API详解(查询、退款、提现等)-转
- 系统消息发现有新的未读消息弹框提示
- Linux与Windows共享文件夹之samba的安装与使用 资源管理器直接查看服务器文件
- 从数组创建ArrayList
- 软件自动化测试面试三部曲:第三是经验,第二是技术,第一是...
- ROS学习笔记八:创建ROS msg和srv
- Enterprise Solution(2.2.20130525) 解决方案配置与源代码下载
- 用cin解决有时输入两个,有时输三个变量
- for in和for of的区别(转)
- JAVA中方法和变量在继承中的覆盖和隐藏
- 零基础小白学Java 基础语法
- Flink学习之flink sql
- 计算机页面里的坚果云删不了怎么回事,坚果云 常见问题
- 【Windows包管理器(choco)】choco : 无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正 确,然后再试一次。
热门文章
- win10系统重装步骤详解
- 论文阅读>污垢检测:Vision-Based Dirt Detection and Adaptive Tiling Scheme for Selective Area Coverage
- CNT-以太网帧和IEEE802.3帧
- 物联网毕业设计 单片机指纹识别考勤系统设计与实现
- Minecraft Java版1.11_Editing Java版1.11-pre1
- Python3自定义包
- html5 webp,在 CRA 中使用 webp 图片提升加载性能
- 物联网嵌入式开发平台和开发流程
- IDEA社区版tomcat配置教程
- 移动硬盘安装manjaro 20.2以及常用软件安装