PHP对图片进行等比例放大、缩小

       最近在处理小程序的图片数据,需要对库里数据的图片进行等比例放大缩小,自己也是网上找了一番,最终合成适用于放大、缩小并保存的例子,下面就跟大家分享这段代码:

/**
 * 处理图片尺寸【等比例缩小或放大】
 * @param $filePath【进行处理图片本地地址】
 * @param $saveImage【处理后保存地址】
 * @param $maxWidth【最大宽度】
 * @param $maxHeight【最大高度】
 * @param $minWith【最小宽度】
 * @param $minHeight【最小高度】
 */
function resizeImage($filePath, $saveImage, $maxWidth, $maxHeight, $minWith, $minHeight)
{
    //获取图片基础信息
    $tmpImageSize = getimagesize($filePath);
    $originalImageWidth = $tmpImageSize[0];    //宽度
    $originalImageHeight = $tmpImageSize[1];   //长度
    $originalImageType = $tmpImageSize[2];     //类型
    //保存图片的宽度跟高度
    $targetWidth = $tmpImageSize[0];
    $targetHeight = $tmpImageSize[1];
    //计算图片将要保存的尺寸
    if ($originalImageWidth > $maxWidth) {           //图片宽度超过最大限度
        $targetWidth = $maxWidth;
        $targetHeight = $originalImageHeight * ($maxWidth / $originalImageWidth);
    }
    if ($originalImageWidth < $minWith) {            //图片宽带小于最小限度
        $targetWidth = $minWith;
        $targetHeight = $originalImageHeight * ($minWith / $originalImageWidth);
    }
    if ($targetHeight > $maxHeight) {                //图片高度超过最大限度
        $targetWidth = $targetWidth * ($maxHeight / $targetHeight);
        $targetHeight = $maxHeight;
    }
    if ($targetHeight < $minHeight) {               //图片高度小于最小限度
        $targetWidth = $targetWidth * ($minHeight / $targetHeight);
        $targetHeight = $minHeight;
    }
    //最后检验宽度跟高度是否符合【兜底】
    if ($targetWidth < $minWith) {
        $targetWidth = $minWith;
    }
    if ($targetWidth > $maxWidth) {
        $targetWidth = $maxWidth;
    }
    if ($targetHeight < $minHeight) {
        $targetHeight = $minHeight;
    }
    if ($targetHeight > $maxHeight) {
        $targetHeight = $maxHeight;
    }
    //四舍五入
    $targetWidth = ceil($targetWidth);
    $targetHeight = ceil($targetHeight);
    //判断图片格式进行处理
    if ($originalImageType == 1) {
        $temPic = imagecreatefromgif($filePath);
    } else if ($originalImageType == 2) {
        $temPic = imagecreatefromjpeg($filePath);
    } else if ($originalImageType == 3) {
        $temPic = imagecreatefrompng($filePath);
    } else {
        exit();
    }
    //保存图片
    $thPic = imagecreatetruecolor($targetWidth, $targetHeight);
    // 调整默认颜色
    $color = imagecolorallocate($thPic, 255, 255, 255);
    imagefill($thPic, 0, 0, $color);
    //裁剪
    imagecopyresampled($thPic, $temPic, 0, 0, 0, 0, $targetWidth, $targetHeight, 
    $originalImageWidth, $originalImageHeight);
    //保存图片
    imagejpeg($thPic, $saveImage);
}

       以上代码就是处理根据我们的要求处理图片的放大、缩小,下面就是如何引用的代码:

resizeImage('image/123.jpg','image/321.jpg', 1024, 1024,200, 200);

这样我们就成功可以对图片进行放大、缩小并保存在本地。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佛布朗斯基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值