PHP自定義圖片縮放函數(shù)實現(xiàn)等比例不失真縮放的方法
本文實例講述了PHP自定義圖片縮放函數(shù)實現(xiàn)等比例不失真縮放的方法。分享給大家供大家參考,具體如下:
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype) { $pic_width = imagesx($im); $pic_height = imagesy($im); if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) { if($maxwidth && $pic_width>$maxwidth) { $widthratio = $maxwidth/$pic_width; $resizewidth_tag = true; } if($maxheight && $pic_height>$maxheight) { $heightratio = $maxheight/$pic_height; $resizeheight_tag = true; } if($resizewidth_tag && $resizeheight_tag) { if($widthratio<$heightratio) $ratio = $widthratio; else $ratio = $heightratio; } if($resizewidth_tag && !$resizeheight_tag) $ratio = $widthratio; if($resizeheight_tag && !$resizewidth_tag) $ratio = $heightratio; $newwidth = $pic_width * $ratio; $newheight = $pic_height * $ratio; if(function_exists("imagecopyresampled")) { $newim = imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } else { $newim = imagecreate($newwidth,$newheight); imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } $name = $name.$filetype; imagejpeg($newim,$name); imagedestroy($newim); } else { $name = $name.$filetype; imagejpeg($im,$name); } }
參數(shù)說明:
$im 圖片對象,應用函數(shù)之前,你需要用imagecreatefromjpeg()讀取圖片對象,如果PHP環(huán)境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();
$maxwidth 定義生成圖片的最大寬度(單位:像素)
$maxheight 生成圖片的最大高度(單位:像素)
$name 生成的圖片名
$filetype 最終生成的圖片類型(.jpg/.png/.gif)
代碼注釋:
第3~4行:讀取需要縮放的圖片實際寬高
第8~26行:通過計算實際圖片寬高與需要生成圖片的寬高的壓縮比例最終得出進行圖片縮放是根據(jù)寬度還是高度進行縮放,當前程序是根據(jù)寬度進行圖片縮放。如果你想根據(jù)高度進行圖片縮放,你可以將第22行的語句改成$widthratio>$heightratio
第28~31行:如果實際圖片的長度或者寬度小于規(guī)定生成圖片的長度或者寬度,則要么根據(jù)長度進行圖片縮放,要么根據(jù)寬度進行圖片縮放。
第33~34行:計算最終縮放生成的圖片長寬。
第36~45行:根據(jù)計算出的最終生成圖片的長寬改變圖片大小,有兩種改變圖片大小的方法:ImageCopyResized()函數(shù)在所有GD版本中有效,但其縮放圖像的算法比較粗糙。ImageCopyResamples(),其像素插值算法得到的圖像邊緣比較平滑,但該函數(shù)的速度比ImageCopyResized()慢。
第47~49行:最終生成經(jīng)過處理后的圖片,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()
第51~56行:如果實際圖片的長寬小于規(guī)定生成的圖片長寬,則保持圖片原樣,同理,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()。
特別說明:
GD庫1.6.2版以前支持GIF格式,但因GIF格式使用LZW演算法牽涉專利權(quán),因此在GD1.6.2版之后不支持GIF的格式。如果你是WINDOWS的環(huán)境,你只要進入PHP.INI文件找到extension=php_gd2.dll,將#去除,重啟APACHE即可,如果你是Linux環(huán)境,又想支持GIF,PNG,JPEG,你需要去下載libpng,zlib,以及freetype字體并安裝。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP圖形與圖片操作技巧匯總》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)學運算技巧總結(jié)》、《php日期與時間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
- PHP圖片處理之使用imagecopyresampled函數(shù)實現(xiàn)圖片縮放例子
- php使用imagick模塊實現(xiàn)圖片縮放、裁剪、壓縮示例
- PHP中圖片等比縮放的實例
- php實現(xiàn)按指定大小等比縮放生成上傳圖片縮略圖的方法
- php圖片的裁剪與縮放生成符合需求的縮略圖
- PHP圖片等比例縮放生成縮略圖函數(shù)分享
- php實現(xiàn)等比例不失真縮放上傳圖片的方法
- php縮放圖片(根據(jù)寬高的等比例縮放)實例介紹
- php實現(xiàn)圖片縮放功能類
- 常用的php圖片處理類(水印、等比縮放、固定高寬)分享
- PHP圖片裁剪與縮放示例(無損裁剪圖片)
- PHP實現(xiàn)將上傳圖片自動縮放到指定分辨率,并保持清晰度封裝類示例
相關(guān)文章
讓php處理圖片變得簡單 基于gb庫的圖片處理類附實例代碼下載
讓php處理圖片變得簡單 基于gb庫的圖片處理類附實例代碼下載,需要的朋友可以參考下。2011-05-05PHP實現(xiàn)統(tǒng)計所有字符在字符串中出現(xiàn)次數(shù)的方法
這篇文章主要介紹了PHP實現(xiàn)統(tǒng)計所有字符在字符串中出現(xiàn)次數(shù)的方法,涉及php字符遍歷與統(tǒng)計運算相關(guān)操作技巧,需要的朋友可以參考下2017-10-10PHP動態(tài)分頁函數(shù),PHP開發(fā)分頁必備啦
PHP動態(tài)分頁函數(shù),PHP開發(fā)分頁必備啦。其實吧,這個是必用的,不說了,PHP動態(tài)分頁函數(shù)還是不錯,比較簡單吧2011-11-11