這篇文章給大家分享的是有關(guān)PHP如何自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
成都創(chuàng)新互聯(lián)公司專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國(guó)電信/網(wǎng)通/移動(dòng)機(jī)房,綿陽(yáng)服務(wù)器托管服務(wù)有保障!具體如下:
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ù)說(shuō)明:
$im 圖片對(duì)象,應(yīng)用函數(shù)之前,你需要用imagecreatefromjpeg()讀取圖片對(duì)象,如果PHP環(huán)境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();
$maxwidth 定義生成圖片的較大寬度(單位:像素)
$maxheight 生成圖片的較大高度(單位:像素)
$name 生成的圖片名
$filetype 最終生成的圖片類型(.jpg/.png/.gif)
代碼注釋:
第3~4行:讀取需要縮放的圖片實(shí)際寬高
第8~26行:通過(guò)計(jì)算實(shí)際圖片寬高與需要生成圖片的寬高的壓縮比例最終得出進(jìn)行圖片縮放是根據(jù)寬度還是高度進(jìn)行縮放,當(dāng)前程序是根據(jù)寬度進(jìn)行圖片縮放。如果你想根據(jù)高度進(jìn)行圖片縮放,你可以將第22行的語(yǔ)句改成$widthratio>$heightratio
第28~31行:如果實(shí)際圖片的長(zhǎng)度或者寬度小于規(guī)定生成圖片的長(zhǎng)度或者寬度,則要么根據(jù)長(zhǎng)度進(jìn)行圖片縮放,要么根據(jù)寬度進(jìn)行圖片縮放。
第33~34行:計(jì)算最終縮放生成的圖片長(zhǎng)寬。
第36~45行:根據(jù)計(jì)算出的最終生成圖片的長(zhǎng)寬改變圖片大小,有兩種改變圖片大小的方法:ImageCopyResized()函數(shù)在所有GD版本中有效,但其縮放圖像的算法比較粗糙。ImageCopyResamples(),其像素插值算法得到的圖像邊緣比較平滑,但該函數(shù)的速度比ImageCopyResized()慢。
第47~49行:最終生成經(jīng)過(guò)處理后的圖片,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()
第51~56行:如果實(shí)際圖片的長(zhǎng)寬小于規(guī)定生成的圖片長(zhǎng)寬,則保持圖片原樣,同理,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()。
特別說(shuō)明:
GD庫(kù)1.6.2版以前支持GIF格式,但因GIF格式使用LZW演算法牽涉專利權(quán),因此在GD1.6.2版之后不支持GIF的格式。如果你是WINDOWS的環(huán)境,你只要進(jìn)入PHP.INI文件找到extension=php_gd2.dll,將#去除,重啟APACHE即可,如果你是Linux環(huán)境,又想支持GIF,PNG,JPEG,你需要去下載libpng,zlib,以及freetype字體并安裝。
感謝各位的閱讀!關(guān)于“PHP如何自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
當(dāng)前文章:PHP如何自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放-創(chuàng)新互聯(lián)
當(dāng)前地址:http://aaarwkj.com/article28/dpgccp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、品牌網(wǎng)站制作、用戶體驗(yàn)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容