PHP例項————圖片等比例縮放功能
阿新 • • 發佈:2018-12-29
在網站開發的過程中,經常要對一些圖片進行一些處理,比如說縮放,裁剪,加水印等等。當然這些功能不僅僅可以用在開發網站的過程中,平時需要對圖片做一些處理的時候,把這個功能封裝到函式中去,要處理圖片的時候,根據自己的要求在函式中新增需要的引數不就搞定了麼。雖說這個對於小白來說可能一下子上來就點困難,但是一回生二回熟嘛。好了,進入正題。今天分享一個影象等比例縮放的函式。需要中的同學可以稍作修改,然後自己拿去用,就省的自己寫了(大神請無視).
1.首先,瞭解一下圖片縮放中多需要的函式
有不太明白的可以用php開發手冊去檢索一下,上面講的都是非常明白,是學習時一個非常好的工具,無論是新手還是老鳥。
2.分享一下程式碼,註釋寫的很明白了(自我感覺良好,不足之處望大家指正)
<?php function ImageShrink($imgfile,$minx,$miny){ //獲取大圖資訊 $imgarr=getimagesize($imgfile); $maxx=$imgarr[0];//寬 $maxy=$imgarr[1];//長 $maxt=$imgarr[2];//格式 $maxm=$imgarr['mime'];//mime型別 //大圖資源 $maxim=imagecreatefromjpeg($imgfile); //縮放判斷 if(($minx/$maxx)>($miny/$maxy)){ $scale=$miny/$maxy; }else{ $scale=$minx/$maxx; } //對所求值進行取整 $minx=floor($maxx*$scale); $miny=floor($maxy*$scale); //新增小圖 $minim=imagecreatetruecolor($minx,$miny); //縮放函式 imagecopyresampled($minim,$maxim,0,0,0,0,$minx,$miny,$maxx,$maxy); //小圖輸出 header("content-type:{$maxm}"); //判斷圖片型別 switch($maxt){ case 1: $imgout="imagegif"; break; case 2: $imgout="imagejpeg"; break; case 3: $imgout="imagepng"; break; } //變數函式 $imgout($minim,'copypic.jpg'); //釋放資源 imagedestroy($maxim); imagedestroy($minim); } ImageShrink("picture/apple.jpg",50,50); ?>
3.整段程式碼中有幾個不太容易理解的地方,稍作解釋
(1)getimagesize()這個函式的返回值是一個數組,陣列中包含這個圖片尺寸,格式等資訊。根據鍵值對可以獲取其中的值,賦給變數,然後在後面需要用的地方直接傳入變數。關於函式,詳解請看手冊。
(2)進行正比例縮放時,我們需要考慮縮放的比例,拿小圖的長寬和大圖的長寬做比較,選擇比例小的作為縮放比例。這裡不是特別好理解,大家可以親自試試。
(3)大圖縮放之後,小圖的格式沒有發生變化,所以在後面需要函式輸出影象的時候,判斷影象格式,這裡就需要使用變數函式。將函式賦給一個變數,這招用到的時候感覺還是蠻叼的。
(4)儲存的圖片格式可以自己設定,儲存路徑與原圖片同一路徑。其他引數看個人需求了。