PHP圖片壓縮類,超低耗損,極大的保持清晰度

這是一個超好用的圖片壓縮類!

喜歡的朋友可以點擊喜歡和收藏刃跛,如果轉(zhuǎn)載請注明出處http://www.reibang.com/p/d2b4d34f86e2

<?php
 
/**
 * 分享請保持網(wǎng)址哨啃。尊重別人勞動成果胁住。謝謝谐丢。
 * 圖片壓縮類:通過縮放來壓縮揭蜒。如果要保持源圖比例淘衙,把參數(shù)$percent保持為1即可传藏。
 * 即使原比例壓縮,也可大幅度縮小彤守。數(shù)碼相機(jī)4M圖片毯侦。也可以縮為700KB左右。如果縮小比例具垫,則體積會更小侈离。
 * 結(jié)果:可保存、可直接顯示做修。
 */
class imgcompress{
 
       private $src;
       private $image;
       private $imageinfo;
       private $percent = 0.5;
       /**
        * 圖片壓縮
        * @param $src 源圖
        * @param float $percent  壓縮比例
        */
       public function __construct($src, $percent=1)
       {
              $this->src = $src;
              $this->percent = $percent;
       }
 
 
       /** 高清壓縮圖片
        * @param string $saveName  提供圖片名(可不帶擴(kuò)展名霍狰,用源圖擴(kuò)展名)用于保存∈渭埃或不提供文件名直接顯示
        */
       public function compressImg($saveName='')
       {
              $this->_openImage();
              if(!empty($saveName)) $this->_saveImage($saveName);  //保存
              else $this->_showImage();
       }
 
       /**
        * 內(nèi)部:打開圖片
        */
       private function _openImage()
       {
              list($width, $height, $type, $attr) = getimagesize($this->src);
              $this->imageinfo = array(
                     'width'=>$width,
                     'height'=>$height,
                     'type'=>image_type_to_extension($type,false),
                     'attr'=>$attr
              );
              $fun = "imagecreatefrom".$this->imageinfo['type'];
              $this->image = $fun($this->src);
              $this->_thumpImage();
       }
       /**
        * 內(nèi)部:操作圖片
        */
       private function _thumpImage()
       {
              $new_width = $this->imageinfo['width'] * $this->percent;
              $new_height = $this->imageinfo['height'] * $this->percent;
              $image_thump = imagecreatetruecolor($new_width,$new_height);
              //將原圖復(fù)制帶圖片載體上面蔗坯,并且按照一定比例壓縮,極大的保持了清晰度
              imagecopyresampled($image_thump,$this->image,0,0,0,0,$new_width,$new_height,$this->imageinfo['width'],$this->imageinfo['height']);
              imagedestroy($this->image);
              $this->image = $image_thump;
       }
       /**
        * 輸出圖片:保存圖片則用saveImage()
        */
       private function _showImage()
       {
              header('Content-Type: image/'.$this->imageinfo['type']);
              $funcs = "image".$this->imageinfo['type'];
              $funcs($this->image);
       }
       /**
        * 保存圖片到硬盤:
        * @param  string $dstImgName  1、可指定字符串不帶后綴的名稱燎含,使用源圖擴(kuò)展名 宾濒。2、直接指定目標(biāo)圖片名帶擴(kuò)展名屏箍。
        */
       private function _saveImage($dstImgName)
       {
              if(empty($dstImgName)) return false;
              $allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif'];   //如果目標(biāo)圖片名有后綴就用目標(biāo)圖片擴(kuò)展名 后綴绘梦,如果沒有橘忱,則用源圖的擴(kuò)展名
              $dstExt =  strrchr($dstImgName ,".");
              $sourseExt = strrchr($this->src ,".");
              if(!empty($dstExt)) $dstExt =strtolower($dstExt);
              if(!empty($sourseExt)) $sourseExt =strtolower($sourseExt);
 
              //有指定目標(biāo)名擴(kuò)展名
              if(!empty($dstExt) && in_array($dstExt,$allowImgs)){
                     $dstName = $dstImgName;
              }elseif(!empty($sourseExt) && in_array($sourseExt,$allowImgs)){
                     $dstName = $dstImgName.$sourseExt;
              }else{
                     $dstName = $dstImgName.$this->imageinfo['type'];
              }
              $funcs = "image".$this->imageinfo['type'];
              $funcs($this->image,$dstName);
       }
 
       /**
        * 銷毀圖片
        */
       public function __destruct(){
              imagedestroy($this->image);
       }
 
}

$source = '1.png';
$dst_img = '../copy1.png'; //可加存放路徑
$percent = 1;  #原圖壓縮,不縮放
$image = (new imgcompress($source,$percent))->compressImg($dst_img);

覺得有用可以點點下方的喜歡哦

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卸奉,一起剝皮案震驚了整個濱河市钝诚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榄棵,老刑警劉巖凝颇,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疹鳄,居然都是意外死亡拧略,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門瘪弓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垫蛆,“玉大人,你說我怎么就攤上這事腺怯「し梗” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵瓢喉,是天一觀的道長宁赤。 經(jīng)常有香客問我,道長栓票,這世上最難降的妖魔是什么决左? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮走贪,結(jié)果婚禮上佛猛,老公的妹妹穿的比我還像新娘。我一直安慰自己坠狡,他們只是感情好继找,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逃沿,像睡著了一般婴渡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凯亮,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天边臼,我揣著相機(jī)與錄音,去河邊找鬼假消。 笑死柠并,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播臼予,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼鸣戴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粘拾?” 一聲冷哼從身側(cè)響起窄锅,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎半哟,沒想到半個月后酬滤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寓涨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了氯檐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戒良。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冠摄,靈堂內(nèi)的尸體忽然破棺而出糯崎,到底是詐尸還是另有隱情,我是刑警寧澤河泳,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布沃呢,位于F島的核電站,受9級特大地震影響拆挥,放射性物質(zhì)發(fā)生泄漏薄霜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一纸兔、第九天 我趴在偏房一處隱蔽的房頂上張望惰瓜。 院中可真熱鬧,春花似錦汉矿、人聲如沸崎坊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈揍。三九已至,卻和暖如春赋续,著一層夾襖步出監(jiān)牢的瞬間男翰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工蚕捉, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留奏篙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像秘通,于是被迫代替她去往敵國和親为严。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344