1. 程式人生 > >php 影象處理 摳圖,生成背景透明png 圖片

php 影象處理 摳圖,生成背景透明png 圖片


*自定義一個圖片等比縮放函式
 *@param string $picname 被縮放圖片名
 *@param string $path 被縮放圖片路徑
 *@param int $maxWidth 圖片被縮放後的最大寬度
 *@param int $maxHeight 圖片被縮放後的最大高度
 *@param string $pre 縮放後的圖片名字首,預設為"s_"
 *@return boolen 返回布林值表示成功與否。
 */
function imageResize($picname,$path,$maxWidth,$maxHeight,$pre="s_"){
    $path = rtrim($path,"/")."/";
    //1獲取被縮放的圖片資訊
    $info = getimagesize($path.$picname);
    //獲取圖片的寬和高
    $width = $info[0];
    $height = $info[1];
    
    //2根據圖片型別,使用對應的函式建立畫布源。
    switch($info[2]){
        case 1: //gif格式
            $srcim = imagecreatefromgif($path.$picname);
            break;
        case 2: //jpeg格式
            $srcim = imagecreatefromjpeg($path.$picname);
            break;
        case 3: //png格式
            $srcim = imagecreatefrompng($path.$picname);
            break;
       default:
            return false;
            //die("無效的圖片格式");
            break;
    }
    //3. 計算縮放後的圖片尺寸
    if($maxWidth/$width<$maxHeight/$height){
        $w = $maxWidth;
        $h = ($maxWidth/$width)*$height;
    }else{
        $w = ($maxHeight/$height)*$width;
        $h = $maxHeight;
    }
    //4. 建立目標畫布
    $dstim = imagecreatetruecolor($w,$h); 

    //5. 開始繪畫(進行圖片縮放)
    imagecopyresampled($dstim,$srcim,0,0,0,0,$w,$h,$width,$height);

    //6. 輸出影象另存為
    switch($info[2]){
        case 1: //gif格式
            imagegif($dstim,$path.$pre.$picname);
            break;
        case 2: //jpeg格式
            imagejpeg($dstim,$path.$pre.$picname);
            break;
        case 3: //png格式
            imagepng($dstim,$path.$pre.$picname);
            break;
    }
    }