1. 程式人生 > >PHP例項————圖片等比例縮放功能

PHP例項————圖片等比例縮放功能

在網站開發的過程中,經常要對一些圖片進行一些處理,比如說縮放,裁剪,加水印等等。當然這些功能不僅僅可以用在開發網站的過程中,平時需要對圖片做一些處理的時候,把這個功能封裝到函式中去,要處理圖片的時候,根據自己的要求在函式中新增需要的引數不就搞定了麼。雖說這個對於小白來說可能一下子上來就點困難,但是一回生二回熟嘛。好了,進入正題。今天分享一個影象等比例縮放的函式。需要中的同學可以稍作修改,然後自己拿去用,就省的自己寫了(大神請無視).

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)儲存的圖片格式可以自己設定,儲存路徑與原圖片同一路徑。其他引數看個人需求了。