php制作縮略圖


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;//返回畫布類型
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM