美文网首页
php如何实现等比例压缩图片的代码

php如何实现等比例压缩图片的代码

作者: Mracale | 来源:发表于2023-10-25 16:44 被阅读0次
    <?php
    /**
     * desription 压缩图片
     * @param sting $imgsrc 图片路径
     * @param string $imgdst 压缩后保存路径
     */
    function compressedImage($imgsrc, $imgdst) {
        list($width, $height, $type) = getimagesize($imgsrc);
        
        $new_width = $width;//压缩后的图片宽
        $new_height = $height;//压缩后的图片高
                
        if($width >= 600){
            $per = 600 / $width;//计算比例
            $new_width = $width * $per;
            $new_height = $height * $per;
        }
        
        switch ($type) {
            case 1:
                $giftype = check_gifcartoon($imgsrc);
                if ($giftype) {
                    header('Content-Type:image/gif');
                    $image_wp = imagecreatetruecolor($new_width, $new_height);
                    $image = imagecreatefromgif($imgsrc);
                    imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                    //90代表的是质量、压缩图片容量大小
                    imagejpeg($image_wp, $imgdst, 90);
                    imagedestroy($image_wp);
                    imagedestroy($image);
                }
                break;
            case 2:
                header('Content-Type:image/jpeg');
                $image_wp = imagecreatetruecolor($new_width, $new_height);
                $image = imagecreatefromjpeg($imgsrc);
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, 90);
                imagedestroy($image_wp);
                imagedestroy($image);
                break;
            case 3:
                header('Content-Type:image/png');
                $image_wp = imagecreatetruecolor($new_width, $new_height);
                $image = imagecreatefrompng($imgsrc);
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, 90);
                imagedestroy($image_wp);
                imagedestroy($image);
                break;
        }
    }
    $dir = "./avators";//根目录
    $dir_one = scandir($dir);
    foreach ($dir_one as $key => $value) {
        if (in_array($value,['.','..'])) {
            continue;
        }
        $dir_two = scandir($dir."/".$value);
        foreach ($dir_two as $k2 => $v2) {
            if (in_array($value,['.','..'])) {
                continue;
            }
            $file = $dir."/".$value."/".$v2;
            if (file_exists($file)) {
                compressedImage($file,$file);
                echo $file.'==';
            }
        }
    }
    echo 'success';
    ?>
    

    相关文章

      网友评论

          本文标题:php如何实现等比例压缩图片的代码

          本文链接:https://www.haomeiwen.com/subject/wiieidtx.html