php等比縮放圖片

來源:互聯網
上載者:User
步驟如下:
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教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.