如何將本地的圖片透過 php 壓縮?

我想問一下,
如何將本地的圖片透過 php 壓縮?
假設我有個資料夾裡面都是圖片
但我如何能夠透過 php 將每個圖片進行壓縮,不改變圖片名稱?
我會做壓縮但是只限於有「上傳」行為...
本地將某文件夾整批壓縮我還真不知道怎麼做
有沒有大神懂這思路?

無論是副檔名或圖片名稱都不變動
唯一變動的只會是 size
這。。。有可能嗎?

阅读 3.4k
1 个回答

大致思路如下(我这个是之前做的压缩本地图片的),其实就是运用php的GD库

<?php
set_time_limit(0);
$p = getDir('code/');
 
foreach($p as $val){
        //$file = "images/3.jpg";
        //header("Content-type: image/jpeg");
        $file_type = substr(strrchr($val,"."),1);
        if ($file_type == 'jpg' || $file_type == 'png' || $file_type == 'gif') {
                $percent = 1;  //图片压缩比
                list($width, $height, $type) = getimagesize($val); //获取原图尺寸
                //缩放尺寸
                $newwidth = $width * $percent;
                $newheight = $height * $percent;
                switch($type){ 
                        case 1:
                                $src_im = imagecreatefromgif($val);
                                break;
                        case 2:
                                $src_im = imagecreatefromjpeg($val);
                                break;
                        case 3:
                                $src_im = imagecreatefrompng($val);
                                break;
                        default:
                                break;
                }
                $dst_im = imagecreatetruecolor($newwidth, $newheight);
                imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                imagejpeg($dst_im,$val); //输出压缩后的图片
                imagedestroy($dst_im);
                imagedestroy($src_im);
        }
}
echo '压缩完成!';
 
 
function searchDir($path,&$data){
if(is_dir($path)){
$dp=dir($path);
while($file=$dp->read()){
if($file!='.'&& $file!='..'){
searchDir($path.'/'.$file,$data);
}
}
$dp->close();
}
if(is_file($path)){
$data[]=$path;
}
}
 
 
function getDir($dir){
$data=array();
searchDir($dir,$data);
return   $data;
}
 
 
?>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题