PHP圖片處理之使用imagecopyresampled函數實現圖片縮放例子

來源:互聯網
上載者:User
網站最佳化不能只定在代碼上,內容也是網站最需要最佳化的對象之一,而映像又是網站中最主要的內容。映像的最佳化最需要處理的就是將所有上傳到網站中的大圖片自動縮放稱小圖(在網頁中大小夠用就行),以減少N倍的儲存空間,並提高下載瀏覽的速度。所以圖片縮放成一個動態網站必須要處理的任務,經常和檔案上傳綁定在一起工作,能在上傳圖片的同時就調整其大小。當然有時也需要單獨處理圖片縮放,例如在做圖片列表時,如果直接用大圖而在顯示時才將其縮放成小圖,這樣做不僅下載速度會變慢,也會降低頁面回應時間。通常遇到這樣的應用都是在上傳圖片時,再為圖片縮放出一個專門用來做列表的小表徵圖,當單擊這個小表徵圖時,才會去下載大圖瀏覽。

  使用GD庫處理圖片縮放,通常使用imagecopyresized()和imagecopyresampled()兩個函數中的一個,而使用imagecopyresampled()函數處理後品質會更好一些。這裡只介紹一下imagecopyresampled()函數的使用方法。該函數的原型如下所示:

  bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h)

  該函數將一幅映像中的正方形地區複製到另一個映像中,平滑地插入像素值,因此減小了映像的大小而仍然保持了極高的清晰度。如果成功,則返回TRUE,失敗則返回FALSE。參數dst_image和src_image分別是靶心圖表像和源映像的標識符。如果源和目標的寬度和高度不同,則會進行相應的映像收縮和展開,座標指的是左上方。本函數可用來在同一幅圖內部複製(如果dst_image和src_image相同的話)但如果地區交迭,則結果不可預知。在下面的樣本中,以JPEG圖片格式為例,編寫一個映像縮放的函數thumb(),代碼如下所示:

<?php    //用於對圖片進行縮放    function thumb($filename,$width=200,$height=200){        //擷取原映像$filename的寬度$width_orig和高度$height_orig        list($width_orig,$height_orig) = getimagesize($filename);        //根據參數$width和$height值,換算出等比例縮放的高度和寬度        if ($width && ($width_orig<$height_orig)){            $width = ($height/$height_orig)*$width_orig;        }else{            $height = ($width / $width_orig)*$height_orig;        }         //將原圖縮放到這個新建立的圖片資源中        $image_p = imagecreatetruecolor($width, $height);        //擷取原圖的映像資源        $image = imagecreatefromjpeg($filename);         //使用imagecopyresampled()函數進行縮放設定        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);         //將縮放後的圖片$image_p儲存,100(品質最佳,檔案最大)        imagejpeg($image_p,$filename);         imagedestroy($image_p);        imagedestroy($image);    }     thumb("brophp.jpg",100,100);?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.