步驟如下:
1.擷取圖片的基本資料
用這個getimagesize函數
2.判斷圖片資源類型並建立對應圖片資源
用這個getPicType函數(自訂函數)
3.計算縮放比例
原則是取最小的縮放係數.例如:800*600的圖片,縮放到200*200以下,則縮放係數為scale=200/800>200/600?200/600:200/800; 因為1/4 < 1/3 所以選用1/4的縮放係數
4.計算縮放後的尺寸
wdith = floor(800*1/4);向下取整
height = floor(600*1/4);
結果縮放後的圖片變為200*150
5.建立靶心圖表像資源
用這個imagecreatetruecolor函數,建立一個真彩的映像
6.等比縮放
用這個imagecopyresampled函數實現縮放
7.輸出映像
用這個outputImage函數(自訂函數)
8.釋放圖片資源
用這個imagedestroy函數
縮放前後:
750*525
200*140
代碼如下:
/** * @function 等比縮放函數(以儲存的方式實現) * @param string $picname 被縮放的處理圖片源 * @param int $maxX 縮放後圖片的最大寬度 * @param int $maxY 縮放後圖片的最大高度 * @param string $pre 縮放後圖片名的首碼名 * @return string 返回後的圖片名稱(帶路徑),如a.jpg --> s_a.jpg */functionscalePic($picname,$maxX=100,$maxY=100,$pre='s_'){$info = getimagesize($picname); //擷取圖片的基本資料$width = $info[0];//擷取寬度$height = $info[1];//擷取高度//判斷圖片資源類型並建立對應圖片資源$im = getPicType($info[2],$picname); //計算縮放比例$scale = ($maxX/$width)>($maxY/$height)?$maxY/$height:$maxX/$width; //計算縮放後的尺寸$sWidth = floor($width*$scale); $sHeight = floor($height*$scale); //建立靶心圖表像資源$nim = imagecreatetruecolor($sWidth,$sHeight); //等比縮放 imagecopyresampled($nim,$im,0,0,0,0,$sWidth,$sHeight,$width,$height); //輸出映像$newPicName = outputImage($picname,$pre,$nim); //釋放圖片資源 imagedestroy($im); imagedestroy($nim); return$newPicName;}/** * function 判斷並返回圖片的類型(以資源方式返回) * @param int $type 圖片類型 * @param string $picname 圖片名字 * @return 返回對應圖片資源 */functiongetPicType($type,$picname){$im=null; switch($type) { case1: //GIF$im = imagecreatefromgif($picname); break; case2: //JPG$im = imagecreatefromjpeg($picname); break; case3: //PNG$im = imagecreatefrompng($picname); break; case4: //BMP$im = imagecreatefromwbmp($picname); break; default: die("不認識圖片類型"); break; } return$im;}/** * function 輸出映像 * @param string $picname 圖片名字 * @param string $pre 新圖片名首碼 * @param resourse $nim 要輸出的映像資源 * @return 返回新的圖片名 */functionoutputImage($picname,$pre,$nim){$info = getimagesize($picname); $picInfo = pathInfo($picname); $newPicName = $picInfo['dirname'].'/'.$pre.$picInfo['basename'];//輸出檔案的路徑switch($info[2]) { case1: imagegif($nim,$newPicName); break; case2: imagejpeg($nim,$newPicName); break; case3: imagepng($nim,$newPicName); break; case4: imagewbmp($nim,$newPicName); break; } return$newPicName;}
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
').text(i)); }; $numbering.fadeIn(1700); }); });
以上就介紹了 php等比縮放圖片,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。