7月122022
php多个图片合成一张图片
/**
* 合成图片
* @param array $image_path 需要合成的图片数组
* @param $save_path 合成后图片保存路径
* @param string $axis 合成方向
* @param string $save_type 合成后图片保存类型
* @return bool|array
*/
function CompositeImage(array $image_path,$save_path,$axis='x',$save_type='png'){
if(count($image_path)<2){
return false;
}
//定义一个图片对象数组
$image_obj=[];
//获取图片信息
$width=0;
$height=0;
foreach($image_path as $k=>$v){
$pic_info=getimagesize($v);
list($mime,$type)=explode('/',$pic_info['mime']);
//获取宽高度
$width+=$pic_info[0];
$height+=$pic_info[1];
if($type=='jpeg'){
$image_obj[]=imagecreatefromjpeg($v);
}elseif($type=='png'){
$image_obj[]=imagecreatefrompng($v);
}else{
$image_obj[]=imagecreatefromgif($v);
}
}
//按轴生成画布方向
if($axis=='x'){
//TODO X轴无缝合成时请保证所有图片高度相同
$img=imageCreatetruecolor($width,imagesy($image_obj[0]));
}else{
//TODO Y轴无缝合成时请保证所有图片宽度相同
$img=imageCreatetruecolor(imagesx($image_obj[0]),$height);
}
//创建画布颜色
$color=imagecolorallocate($img, 255, 255, 255);
imagefill($image_obj[0],0,0,$color);
//创建画布
imageColorTransparent($img,$color);
imagecopyresampled($img,$image_obj[0],0,0,0,0,imagesx($image_obj[0]),imagesy($image_obj[0]),imagesx($image_obj[0]),imagesy($image_obj[0]));
$yx=imagesx($image_obj[0]);
$x=0;
$yy=imagesy($image_obj[0]);
$y=0;
//循环生成图片
for($i=1;$i<=count($image_obj)-1;$i++){
if($axis=='x'){
$x=$x+$yx;
imagecopymerge($img,$image_obj[$i],$x,0,0,0,imagesx($image_obj[$i]),imagesy($image_obj[$i]), 100);
}else{
$y=$y+$yy;
imagecopymerge($img,$image_obj[$i],0,$y,0,0,imagesx($image_obj[$i]),imagesy($image_obj[$i]), 100);
}
}
//设置合成后图片保存类型
if($save_type=='png'){
imagepng($img,$save_path);
}elseif($save_type=='jpg'||$save_type=='jpeg'){
imagejpeg($img,$save_path);
}else{
imagegif($img,$save_path);
}
return true;
}
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!