PHP等比例縮放圖片(最大寬或高)

PHP做前後端圖片上傳的時候 需要做圖片縮放處理
結合了網上很多例子整理的一個方法

//方法參數爲圖片名
function changeSize($str_file)
{
    $size=getimagesize($str_file);
    //這個方法會返回一個數組,第一個元素 (索引值 0) 是圖片的高度,單位是像素 (pixel)。第二個元素 (索引值 1) 是圖片的寬度。第三個元素 (索引值 2) 是圖片的文件格式,其值 1 爲 GIF 格式、 2 爲 JPEG/JPG 格式、3 爲 PNG 格式。第四個元素 (索引值 3) 爲圖片的高與寬字符串,height=xxx width=yyy。

    //因爲PHP只能對資源進行操作,所以要對需要進行縮放的圖片進行拷貝,創建爲新的資源
    //根據圖片的格式使用不同的方法
    if($size[2]==1)
        $src=imagecreatefromgif($str_file);
    if($size[2]==2)
        $src=imagecreatefromjpeg($str_file);
    if($size[2]==3)
        $src=imagecreatefrompng($str_file);

    //取得源圖片的寬度和高度
    $w = $size['0'];
    $h = $size['1'];

    //指定縮放出來的最大的寬度或高度
    $max = 600;

    //根據最大值爲300,算出另一個邊的長度,得到縮放後的圖片寬度和高度
    if ($w > $h) {
        $w = $max;
        $h = $h * ($max / $size['0']);
    } else {
        $h = $max;
        $w = $w * ($max / $size['1']);
    }

    //聲明一個$w寬,$h高的真彩圖片資源,此時只是一個有寬高的黑白圖片。
    $image = imagecreatetruecolor($w, $h);

    //關鍵函數,參數(目標資源,源,目標資源的開始座標x,y, 源資源的開始座標x,y,目標資源的寬高w,h,源資源的寬高w,h)返回值爲bool
    imagecopyresampled($image, $src, 0, 0, 0, 0, $w, $h, $size['0'], $size['1']);

    //將圖片塞進去,也是根據圖片不同的格式選用不同的方法,返回值爲bool。
    if($size[2]==1)
        $result = imagegif($image,$str_file);
    if($size[2]==2)
        $result = imagejpeg($image,$str_file);
    if($size[2]==3)
        $result = imagepng($image,$str_file);

    //銷燬資源
    imagedestroy($image);

 return $result ;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章