php实现图片裁剪功能

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;

本文应业务需要,保存的图片名均已时间戳为主,查看本文的小伙伴可根据自己业务更改成相应的文件名

最后你就能在你所在的服务器的对应位置找到裁剪完成的图片了

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值