php等比縮放圖片


    /**
     *等比例縮放函數(以保存新圖片的方式實現)
     * @param string $picName 被縮放的處理圖片源
     * @param string $savePath 保存路徑
     * @param int $maxx 縮放后圖片的最大寬度
     * @param int $maxy 縮放后圖片的最大高度
     * @param string $pre 縮放后圖片的前綴名
     * @return $string 返回后的圖片名稱() 如a.jpg->s.jpg
     *
     **/
    protected function scaleImg($picName,$savePath, $maxx = 800, $maxy = 450)
    {
        $info = getimageSize($picName);//獲取圖片的基本信息
        $w = $info[0];//獲取寬度
        $h = $info[1];//獲取高度

        if($w<=$maxx&&$h<=$maxy){
            return $picName;
        }
        //獲取圖片的類型並為此創建對應圖片資源
        switch ($info[2]) {
            case 1://gif
                $im = imagecreatefromgif($picName);
                break;
            case 2://jpg
                $im = imagecreatefromjpeg($picName);
                break;
            case 3://png
                $im = imagecreatefrompng($picName);
                break;
            default:
                die("圖像類型錯誤");
        }
        //計算縮放比例
        if (($maxx / $w) > ($maxy / $h)) {
            $b = $maxy / $h;
        } else {
            $b = $maxx / $w;
        }
        //計算出縮放后的尺寸
        $nw = floor($w * $b);
        $nh = floor($h * $b);
        //創建一個新的圖像源(目標圖像)
        $nim = imagecreatetruecolor($nw, $nh);

        //透明背景變黑處理
        //2.上色
        $color=imagecolorallocate($nim,255,255,255);
        //3.設置透明
        imagecolortransparent($nim,$color);
        imagefill($nim,0,0,$color);


        //執行等比縮放
        imagecopyresampled($nim, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
        //輸出圖像(根據源圖像的類型,輸出為對應的類型)
        $picInfo = pathinfo($picName);//解析源圖像的名字和路徑信息
        $savePath = $savePath. "/" .date("Ymd")."/".$this->pre . $picInfo["basename"];
        switch ($info[2]) {
            case 1:
                imagegif($nim, $savePath);
                break;
            case 2:
                imagejpeg($nim, $savePath);
                break;
            case 3:
                imagepng($nim, $savePath);
                break;

        }
        //釋放圖片資源
        imagedestroy($im);
        imagedestroy($nim);
        //返回結果
        return $savePath;
    }

純粹盜用別人的。


免責聲明!

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



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