1. 程式人生 > >gd庫 調整圖片大小

gd庫 調整圖片大小

/*
 *  調整 頭像大小
 *  $srcImage 圖片路徑 (絕對路徑)
 *  $maxwidth 動態設定圖片寬度
 *  $maxheight 動態設定圖片高度
 *  $name   後期追擊引數 (動態設定圖片名稱)
 * */
function resizeImage($srcImage,$maxwidth,$maxheight,$name=1)
{
    list($width, $height, $type, $attr) = getimagesize($srcImage);
    switch ($type) {
        case 1:
            $img = imagecreatefromgif($srcImage);
            break;
        case 2:
            $img = imagecreatefromjpeg($srcImage);
            break;
        case 3:
            $img = imagecreatefrompng($srcImage);
            break;
        default:
            $img = imagecreatefrompng($srcImage);
            break;
    }
    $canvas = imagecreatetruecolor($maxwidth,$maxheight); // 建立一個真彩色影象 我把它理解為建立了一個畫布

    imagecopyresampled($canvas,$img,0,0,0,0,$maxwidth,$maxheight,$width,$height);
    // 選取原圖片整個長寬上的畫素,將原圖片左上角和畫布左上角對齊,畫布寬100px,高100px。
    // 這樣設定是縮小或放大原圖片。 如果原圖片寬或高比畫布大就會縮小,如果原圖片寬或高比畫布小就會放大。
    // 如果想擷取圖片,不想放大或縮小。 就要將最後兩個引數設定成分別和畫布寬和高相等。 像這樣:imagecopyresampled($canvas,$sourceImage,0,0,0,0,$newWidth,$newHeight,$newWidth,$newHeight);
    // 如果想控制從哪裡開始擷取,就要設定後面兩個“0”。 前面一個“0”是原圖片上X軸座標,後面一個是Y軸座標。 比如,想從原圖片X軸100px,Y軸50px的點開始擷取。就要這樣設定:imagecopyresampled($canvas,$sourceImage,0,0,100,50,$newWidth,$newHeight,$newWidth,$newHeight);
    return $canvas;//返回引數為已經開啟的圖片格式
}