php製作縮圖
阿新 • • 發佈:2018-11-20
PHP製作縮圖
1、製作縮圖的函式
imagecopyresampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh)
說明:
dest 目標畫布
src 原圖(要縮略的圖片)
dx,dy 目標畫布上的一個點
sx,sy 原圖上的一個點
dw,dh 畫布的 寬高
sw,sh 原圖的寬高
從src原圖上以sx,sy為左上角,取寬為sw,高為sh的區域,放在dest畫布上,以dx,dy為左上角,寬為dw,高為dh的區域。
2、製作的原理
生成縮圖,關鍵的是如何計算縮放比率。
1、畫布的高/畫布的寬>原圖的高/原圖的寬
也就是下圖這種情況: 縮放比率 = 新圖寬度 / 原圖寬度
2、原圖的高/原圖的寬>畫布的高/畫布的寬
也就是下圖這種情況:縮放比率 = 新圖高度 / 原圖高度
3、具體程式碼
function thumb($file,$dw,$dh,$path){//這四個引數分別是1、要縮略的圖片,2、畫布的寬(也就是你要縮略的寬)3、畫布的高(也就是你要縮略的高),4、儲存路徑) //獲取使用者名稱圖 $srcImg=$this->getImg($file);//呼叫下面那個函式,實現根據圖片型別來建立不同的圖片畫布 //獲取原圖的寬高 $infoSrc=getimagesize($file);//這個getimagesize()是php裡面的系統函式用來獲取圖片的具體資訊的 $sw=$infoSrc[0];//獲取要縮圖片的寬 $sh=$infoSrc[1];。。獲取要縮略的圖片的高 //建立縮圖畫布 $destImg=imagecreatetruecolor($dw, $dh); //為縮圖填充背景色 $bg=imagecolorallocate($destImg,250,250,250); imagefill($destImg,0,0,$bg); //計算例縮放的尺寸 if($dh/$dw>$sh/$sw){ $fw=$dw; $fh=$sh/$sw*$fw; }else{ $fh=$dh; $fw=$fh*$sw/$sh; } //居中放置 $dx=($dw-$fw)/2; $dy=($dh-$fh)/2; //建立縮圖 imagecopyresampled($destImg, $srcImg, 0, 0, 0, 0 ,$fw, $fh,$sw, $sh); $baseName='thumb_'.basename($file);//給縮略的圖片命名,basename()是系統內建函式用來獲取字尾名的 $savePath=$path.'/'.$baseName;//設定縮圖片儲存路徑 imagejpeg($destImg,$savePath)//把縮圖存放到上一步設定的儲存路徑裡 } function getImg($file){//這是以一個動態建立圖片畫布的函式(根據具體的圖片型別創相應型別的畫布) $info=getimagesize($file); $fn=$info['mime'];//獲得圖片型別; switch($fn){ case 'image/jpeg'://如果型別是imag/jpeg就建立jpeg型別的畫布 $img=imagecreatefromjpeg($file); break; case 'image/gif': $img=imagecreatefromgif($file);//如果型別是gif就建立gif型別的畫布 case 'image/png': $img=imagecreatefrompng($file);//如果型別是png就建立png型別的畫布 break; } return $img;//返回畫布型別 }