图片压缩(1次)

  • 只针对限定1M
    $data = file_get_contents("输入路径");
    $maxSize = 1 * 1024 * 1024;
    //图片进行压缩
    $data = compressImage($data, $maxSize);
    file_put_contents("输出路径", $data);
    function compressImage($data, $maxSize) {
        $size = strlen($data);
        $img = imagecreatefromstring($data);
        $width = imagesx($img);
        $height = imagesy($img);
        $percent = 1;
        $tmpWidth = $width;
        $tmpHeight = $height;
        while ($size > $maxSize) {
            $tmpPercent = round(log($maxSize, $size), 1);
            $tmpPercent = $tmpPercent == 1 ? $tmpPercent - 0.1 : $tmpPercent;
            $tmpWidth = $tmpWidth * $tmpPercent;
            $tmpHeight = $tmpHeight * $tmpPercent;
            $size = $tmpWidth * $tmpHeight / 0.95;//输出的是png,只适用于1M
            //$size = $tmpWidth * $tmpHeight / 8;//输出的是jpg
            $percent = $percent * $tmpPercent;
        }
        $newWidth = $width * $percent;
        $newHeight = $height * $percent;
        $newImg = imagecreatetruecolor($newWidth, $newHeight);
        imagecopyresampled($newImg, $img, 0, 0, 0, 0, floor($newWidth), floor($newHeight), $width, $height);
        ob_start(); //Turn on output buffering
        imagepng($newImg); //Generate your image
        $data = $output = ob_get_contents(); // get the image as a string in a variable
        ob_end_clean(); //Turn off output buffering and clean it
        imagedestroy($newImg);
        print_r("\npercent={$percent},newWidth={$newWidth},newHeight={$newHeight},size={$size}");
        return $data;
    }

     

转载于:https://www.cnblogs.com/fatRabbit-/p/11394626.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值