1.准备工作
首先我们得知道图片处理是基于gd库拓展而实现我们想要的功能
需要在我们的php.ini中查看extension=gd2 是否开启,如果未开启需要将前面分号放开重启php服务即可
2.进入正题
我们要知道裁剪需要那些环节
需要原图地址(浏览器能访问的那种)
需要创建一个放置裁剪好图片的空白图纸
需要知道裁剪的范围坐标
需要一个放置裁剪完地址的文件
最后释放图片资源即可
3.代码部分
//首先获取原图片地址
$url = db('draws')->where('id',$image_id)->value('files');
$src = 'http://***.com'.$url;
//获取图片后缀
$filename = substr(strrchr($url,"."),1);
//原图坐标
//[[1440, 1158], [1647, 1158], [1647, 1242], [1440, 1242]]
//获取坐标x,y点
$x = $range[0][0]; // 左上角 x 坐
$y = $range[0][1]; // 左上角 y 坐标
//设置目标图像高度和宽度
$w = $range[1][0]-$range[0][0]+60;//原图的宽度
$h = $range[2][1]-$range[0][1]+70;//原图的高度
//根据原图后缀选择不同的图像处理方法
if($filename == 'jpg'){
//获取原图
$im = imagecreatefromjpeg($src);
}elseif($filename == 'png'){
$im = imagecreatefrompng($src);
}else{
$this->error('请传入png或者jpg格式的图片');
}
//获取新图
$newim = imagecreatetruecolor($w,$h);
//目标图像 原图像 目标x点 目标y点 原图x点 原图y点 目标宽度 目标高度 原图宽度 原图高度
imagecopyresampled($newim , $im , 0, 0, $x , $y , $w, $h, $w , $h );
$time = time().'.'.$filename;
//设置新图存储地址,如果是服务器一定要是完整路径
$newImagePath = '/www/wwwroot/***.com/public/testdata/img/'.$time;
//将图片输出到新路径中
imagejpeg($newim, $newImagePath);
// 释放图片资源
imagedestroy($im);
imagedestroy($newim);
return $time;
本文应业务需要,保存的图片名均已时间戳为主,查看本文的小伙伴可根据自己业务更改成相应的文件名
最后你就能在你所在的服务器的对应位置找到裁剪完成的图片了