php實現圖片縮放,超詳細注釋

來源:互聯網
上載者:User

用php實現的處理圖片大小。

注釋都在代碼裡,直接看代碼吧。
此代碼也適用於在網頁上查看被處理後的圖片,只需將
頭部添加header(“content-type:image/png”);
把函數體內末尾的傳回值去掉,
並把$outType($des_img,$newname);改成$outType($des_img); 即可。

/**<?php//header("content-type:image/png"); * @todo  把一張圖片按照使用者定義的高寬進行縮放,並把處理後的圖片重新命名,放在指定檔案夾 * @param string $width:使用者定義的需要處理成的目標寬度 * @param string $height:使用者定義的需要處理的目標高度 * @param string $filename: 圖片的名字 * @param string $path:選擇性參數,儲存的新圖片的路徑,若不傳值,則預設目前的目錄 * @return string $newname: 返回的是處理後的圖片的新名字 */ function deal($width,$height,$filename,$path=''){     /* getimagesize 擷取映像的資料,傳回值是一個數組,      * arr[0]代表圖片的寬度 ,arr[1]代表圖片的高度,arr[2]代表映像類型,返回的是數字      * arr[3] 代表包含圖片高寬的字串,如width='200' height='100',可直接用在html標籤裡面      * arr[bits]代表映像的每種顏色的位元,用二進位表示      * arr[mime]映像的mime資訊,如image/png      * arr[channels]:映像的通道值      * */     $arr = getimagesize($filename);     //判斷傳入的圖片的格式,建立、產生相應的圖片格式     switch ($arr['mime']){//mime擷取映像的mime值,用於判斷建立圖片的格式和產生圖片的格式         case "image/png":             $srcType = 'imagecreatefrompng';             $outType = 'imagepng';             break;         case "image/gif":             $srcType = 'imagecreatefromgif';             $outType = 'imagegif';             break;         case "image/jpg":         case "image/jpeg":             $srcType = 'imagecreatefromjpeg';             $outType = 'imagejpeg';             break;     }    $src_img = $srcType($filename);    $src_w = $arr[0];  //擷取傳入圖片的真實寬度    $src_h = $arr[1];  //擷取傳入圖片的真實高度    $des_w = $width;   //使用者定義的傳入的寬度,即目標寬度    $des_h = $height;  //使用者定義的傳入的高度,即目標高度    $scale_w = $src_w/$des_w;   //擷取真實寬度與目標寬度的比例    $scale_h = $src_h/$des_h;   //擷取真實高度與目標高度的比例    if($src_w <= $des_w && $src_h <= $des_h){        $true_w = $src_w;        $true_h = $src_h;        $des_img = imagecreatetruecolor($true_w, $true_h);        //若scale_w > scale_h ,即原圖片的寬大於高,橫向圖片,依據寬為基準    }elseif ($scale_w >= $scale_h){        $true_w = $src_w/$scale_w;        $true_h = $src_h/$scale_w;        $des_img = imagecreatetruecolor($true_w,$true_h);        //否則就是原圖片的高大於寬,豎向圖片,則依據高為基準來縮放    }else{        $true_w = $src_w/$scale_h;        $true_h = $src_h/$scale_h;        $des_img = imagecreatetruecolor($true_w,$true_h);    }    imagecopyresized($des_img, $src_img, 0, 0, 0, 0, $true_w, $true_h, $src_w, $src_h);    //下面是重新命名操作後的圖片    $temp = explode('/', $filename);  //把路徑、檔案名稱拆分成數組,方便操作,例如:img/new/a.png,被拆分成temp['img','new','a.png'];    $temp = array_pop($temp);  //通過pop刪除操作,返回最後一個參數值,此參數值為圖片名字,如a.png    $ext = substr($temp, strrpos($temp, '.'));//擷取圖片的尾碼名,通過字串截取,從最後一個.出現的位置截取到末尾,如.png    $name = substr($temp, 0,strrpos($temp, '.'));//擷取圖片的名字,通過字串截取,截取最後一個.出現的位置之前的全部字元,如a    $truePath = !empty($path) ? $path."/" : ''; //將路徑名儲存在變數truePath裡面    //如果路徑存在,且不為路徑名,如c.txt,則建立一個名為c.txt的路徑(檔案夾);如果路徑存在,且為路徑名,則執行下一句;如果未傳入路徑名,則執行下一句    if(!empty($truePath) && !is_dir($truePath)){        mkdir($truePath,0777,true);    }    //給圖片新命名,以路徑名+原名字+自訂字元+尾碼來命名。圖片會存放在相應路徑下    $newname = $truePath.$name."_deal".$ext;    $outType($des_img,$newname);    //$outType($des_img);    return $newname;   } $des_w = 200; $des_h = 250; $filename = 'img/100-100.png'; $name = deal($des_w,$des_h,$filename); var_dump($name);  ?> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.