php 图片裁剪(保存图片 和 不保存图片)

案例一:

<?php
$src_path = 'https://guwanc.oss-cn-shanghai.aliyuncs.com/video/output/outimgs/2018/09/19/153734256819844_00001.jpg';
//创建源图的实例
$src = imagecreatefromstring(file_get_contents($src_path));

//list($src_w, $src_h) = getimagesize($src_img);  // 获取原图尺寸
$info = getimagesize($src_path);
//var_dump($info);exit;

//裁剪开区域左上角的点的坐标
$x = 1;
$y = 400;
//裁剪区域的宽和高
$width = 1100;
$height = 600;
//最终保存成图片的宽和高,和源要等比例,否则会变形
$final_width = 680;
$final_height = round($final_width * $height / $width);

//将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升
$new_image = imagecreatetruecolor($final_width, $final_height);
imagecopyresampled($new_image, $src, 0, 0, $x, $y, $final_width, $final_height, $width, $height);

$ext = pathinfo($src_path, PATHINFO_EXTENSION);
$rand_name = md5(mt_rand() . time()) . "." . $ext;

//输出图片
/*header('Content-Type: image/jpeg');*/   //有头直接渲染图片;无头保存图片
imagejpeg($new_image,$rand_name);
imagedestroy($src);
imagedestroy($new_image);

 

案例二:

<?php
//剪裁图片
//1,打开图像
//2,创建一个空白的图像
$name="https://guwanc.oss-cn-shanghai.aliyuncs.com/video/output/outimgs/2018/09/19/153734256819844_00001.jpg";

cut($name,0,0,500,500);  //$x1,$x2 起点坐标;$y1,$y2 终点坐标;
function cut($name,$x1,$y1,$x2,$y2)
{
    function getinfo($name)
    {
        //getimagesize($dname)函数可以动态的获取图片类型,大小,宽度和高度等
        $info = getimagesize($name);
        $width = $info[0];
        $height = $info[1];
        $mime = $info['mime'];

        switch ($mime) {
            case 'image/jpeg':
                $res = imagecreatefromjpeg($name);
                break;
            case 'image/gif':
                $res = imagecreatefromgif($name);
                break;
            case 'image/png':
                $res = imagecreatefrompng($name);
                break;
            case 'image/wbmp':
                $res = imagecreatefromwbmp($name);
                break;
        }
        return array('width' => $width, 'height' => $height, 'res' => $res);
    }

    $info = getinfo($name);

    $img = imagecreatetruecolor(($x2 - $x1), ($y2 - $y1));
    imagecopymerge($img, $info['res'], 0, 0, $x1, $y1, ($x2 - $x1), ($y2 - $y1), 100);
    // header("content-type:image/png");    //有头直接渲染图片;无头保存图片
    // imagepng($img);
    $ext = pathinfo($name, PATHINFO_EXTENSION);
    $rand_name = md5(mt_rand() . time()) . "." . $ext;

    switch ($ext) {
        case 'jpg':
        case 'jpeg':
        case 'jpe':
            imagejpeg($img, $rand_name);
            break;
        case 'png':
            imagepng($img, $rand_name);
            break;
        case 'gif':
            imagegif($img, $rand_name);
            break;
        case 'bmp':
        case 'wbmp':
            imagewbmp($img, $rand_name);
            break;
    }
    //销毁资源
    imagedestroy($info['res']);
    imagedestroy($img);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值