php縮放處理png和jpg圖片


本例子介紹使用php自帶的GD庫對png和jpg圖片進行放大和縮小處理

 

<?php
$target_width = 120; //目標圖片寬度 $target_height = 150; //目標圖片高度 $target_img = 'me.jpg'; //剪切圖片 deal($target_width,$target_height,$target_img);  //調用主函數

 

主函數 

/**
 *主函數: 獲取圖片信息,准備參數
 */
function deal($target_width,$target_height,$target_img){
    $img_info=getimagesize($target_img);  // 獲取原圖尺寸

    $original_width=$img_info[0];       //原圖片寬度
    $original_height=$img_info[1];       //原圖片高度
    $original_mime=$img_info['mime'];
    $type=substr($original_mime,6);       //原本$original_mime值為'image/類型',通過從第六位字符開始截取得到圖片類型


    $target_scale = $target_height/$target_width; //目標圖像長寬比

    $original_scale = $original_height/$original_width; // 原圖片長寬比

    if ($original_scale>=$target_scale){  // 過高
        $w = intval($src_w);
        $h = intval($target_scale*$w);

        $x = 0;
        $y = ($original_height - $h)/3;
    } else {                              // 過寬
        $h = intval($original_height);
        $w = intval($h/$target_scale);

        $x = ($original_width - $w)/2;
        $y = 0;
    }

    switch($type){
        case 'jpeg':
            dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height);  //調用處理jpg函數
            break;
        case 'png':
            dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //調用處理png函數
            break;
        default:
            echo "請確認需要處理圖片類型是否正確";
            break;
    }
}

 

處理jpg函數 

/**
 * 處理jpg函數
 */
function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){
    // 剪裁
    $source=imagecreatefromjpeg($target_img);  //創建一個新圖象

    $croped=imagecreatetruecolor($w, $h);      //新建一個真彩色圖像
    imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷貝圖像的一部分

    // 縮放
    $scale = $target_width / $w;
    $target = imagecreatetruecolor($target_width, $target_height);   //新建一個真彩色圖像
    $final_w = intval($w * $scale);
    $final_h = intval($h * $scale);
    imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);    //重采樣拷貝部分圖像並調整大小

    // 保存
    $timestamp = time();
    imagejpeg($target, "$timestamp.jpg");

    imagedestroy($target);
}

  

 處理png函數

/**
 * 處理png函數
 */
function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){
    // 剪裁
    $source=imagecreatefrompng($target_img);

    $croped=imagecreatetruecolor($w, $h);      //新建一個真彩色圖像
    imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷貝圖像的一部分

    // 縮放
    $scale = $target_width / $w;
    $target = imagecreatetruecolor($target_width, $target_height);   //新建一個真彩色圖像
    $final_w = intval($w * $scale);
    $final_h = intval($h * $scale);
    imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);    //重采樣拷貝部分圖像並調整大小

    // 保存
    $timestamp = time();

    imagepng($target, "$timestamp.png");
    imagedestroy($target);
}

  


免責聲明!

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



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