PHP縮圖,滿窗格等比例縮小

來源:互聯網
上載者:User

1.等比例縮小
2.必須是規定的縮圖大小
3.原圖可以裁剪但需要中心點在視窗

<?php    function thumbs($FileName,$SaveTo,$SetW,$SetH){        $IMGInfo= getimagesize($FileName);        if(!$IMGInfo) return false;                if($IMGInfo[mime]== "image/pjpeg" || $IMGInfo[mime]=="image/jpeg"){             $ThisPhoto= imagecreatefromjpeg($FileName);         }elseif($IMGInfo[mime]== "image/x-png" || $IMGInfo[mime]== "image/png"){             $ThisPhoto= imagecreatefrompng($FileName);            }elseif($IMGInfo[mime]== "image/gif"){             $ThisPhoto=imagecreatefromgif($FileName);          }          $width=$IMGInfo[0];        $height=$IMGInfo[1];            $scalc = max($width/$SetW,$height/$SetH);        $nw = intval($width/$scalc);        $nh = intval($height/$scalc);        echo "縮減大小:w$nw,h$nh <br />";        if($SetW-$nw == 1){$nw = $SetW;}        if($SetH-$nh == 1){$nh = $SetH;}        echo "+修正1像素: w$nw,h$nh<br />";        //補寬        if($SetW-$nw > 0){            $nh = $nh +(($nh/$nw) * ($SetW-$nw));            echo "*需補寬".($SetW-$nw).",陪補高".(($nh/$nw) * ($SetW-$nw))."  <br />";               $nw = $SetW;        }        //補高        if($SetH-$nh > 0){            $nw = $nw + (($nw/$nh) * ($SetH-$nh));            echo "*需補高".($SetH-$nh).",陪補寬". (($nw/$nh) * ($SetH-$nh)) ."<br />";            $nh = $SetH;        }                $nw = intval($nw);        $nh = intval($nh);        echo "+修正大小:w$nw,h$nh<br />";        $px = ($SetW - $nw)/2;        $py = ($SetH - $nh)/2;        echo "視窗大小:w$SetW,h$SetH <br />";        echo "+位移修正:x$px,y$py <br />";        $NewPhoto=imagecreatetruecolor($SetW,$SetH);         imagecopyresized($NewPhoto,$ThisPhoto,$px,$py,0,0,$nw,$nh,$width,$height);         ImageJpeg ($NewPhoto,$SaveTo);        return true;    }    thumbs('a.jpg','newa.jpg',150,70);?>
<style>    img{ border:1px solid #ccc;margin:2px;}</style>
<img src="/a.jpg"  /><img src="/newa.jpg" />
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.