《PHP實(shí)例:PHP自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放的方法》要點(diǎn):
本文介紹了PHP實(shí)例:PHP自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放的方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP實(shí)戰(zhàn)本文實(shí)例講述了PHP自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放的方法.分享給大家供大家參考,具體如下:
PHP實(shí)戰(zhà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);
}
}
PHP實(shí)戰(zhàn)參數(shù)說明:
PHP實(shí)戰(zhàn)$im 圖片對象,應(yīng)用函數(shù)之前,你需要用imagecreatefromjpeg()讀取圖片對象,如果PHP環(huán)境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();
PHP實(shí)戰(zhàn)$maxwidth 定義生成圖片的最大寬度(單位:像素)
PHP實(shí)戰(zhàn)$maxheight 生成圖片的最大高度(單位:像素)
PHP實(shí)戰(zhàn)$name 生成的圖片名
PHP實(shí)戰(zhàn)$filetype 最終生成的圖片類型(.jpg/.png/.gif)
PHP實(shí)戰(zhàn)代碼注釋:
PHP實(shí)戰(zhàn)第3~4行:讀取需要縮放的圖片實(shí)際寬高
PHP實(shí)戰(zhàn)第8~26行:通過計(jì)算實(shí)際圖片寬高與需要生成圖片的寬高的壓縮比例最終得出進(jìn)行圖片縮放是根據(jù)寬度還是高度進(jìn)行縮放,當(dāng)前程序是根據(jù)寬度進(jìn)行圖片縮放.如果你想根據(jù)高度進(jìn)行圖片縮放,你可以將第22行的語句改成$widthratio>$heightratio
PHP實(shí)戰(zhàn)第28~31行:如果實(shí)際圖片的長度或者寬度小于規(guī)定生成圖片的長度或者寬度,則要么根據(jù)長度進(jìn)行圖片縮放,要么根據(jù)寬度進(jìn)行圖片縮放.
PHP實(shí)戰(zhàn)第33~34行:計(jì)算最終縮放生成的圖片長寬.
PHP實(shí)戰(zhàn)第36~45行:根據(jù)計(jì)算出的最終生成圖片的長寬改變圖片大小,有兩種改變圖片大小的方法:ImageCopyResized()函數(shù)在所有GD版本中有效,但其縮放圖像的算法比較粗糙.ImageCopyResamples(),其像素插值算法得到的圖像邊緣比較平滑,但該函數(shù)的速度比ImageCopyResized()慢.
PHP實(shí)戰(zhàn)第47~49行:最終生成經(jīng)過處理后的圖片,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()
PHP實(shí)戰(zhàn)第51~56行:如果實(shí)際圖片的長寬小于規(guī)定生成的圖片長寬,則保持圖片原樣,同理,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng().
PHP實(shí)戰(zhàn)特別說明:
PHP實(shí)戰(zhàn)GD庫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字體并安裝.
PHP實(shí)戰(zhàn)更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP圖形與圖片操作技巧匯總》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php日期與時(shí)間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
PHP實(shí)戰(zhàn)希望本文所述對大家PHP程序設(shè)計(jì)有所幫助.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4764.html