国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP自定義圖片縮放函數(shù)實(shí)現(xiàn)等比例不失真縮放的方法

2024-05-04 23:49:15
字體:
供稿:網(wǎng)友

本文實(shí)例講述了PHP自定義圖片縮放函數(shù)實(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 圖片對象,應(yīng)用函數(shù)之前,你需要用imagecreatefromjpeg()讀取圖片對象,如果PHP環(huán)境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();

$maxwidth 定義生成圖片的最大寬度(單位:像素)

$maxheight 生成圖片的最大高度(單位:像素)

$name 生成的圖片名

$filetype 最終生成的圖片類型(.jpg/.png/.gif)

代碼注釋:

第3~4行:讀取需要縮放的圖片實(shí)際寬高

第8~26行:通過計(jì)算實(shí)際圖片寬高與需要生成圖片的寬高的壓縮比例最終得出進(jìn)行圖片縮放是根據(jù)寬度還是高度進(jìn)行縮放,當(dāng)前程序是根據(jù)寬度進(jìn)行圖片縮放。如果你想根據(jù)高度進(jìn)行圖片縮放,你可以將第22行的語句改成$widthratio>$heightratio

第28~31行:如果實(shí)際圖片的長度或者寬度小于規(guī)定生成圖片的長度或者寬度,則要么根據(jù)長度進(jìn)行圖片縮放,要么根據(jù)寬度進(jìn)行圖片縮放。

第33~34行:計(jì)算最終縮放生成的圖片長寬。

第36~45行:根據(jù)計(jì)算出的最終生成圖片的長寬改變圖片大小,有兩種改變圖片大小的方法:ImageCopyResized()函數(shù)在所有GD版本中有效,但其縮放圖像的算法比較粗糙。ImageCopyResamples(),其像素插值算法得到的圖像邊緣比較平滑,但該函數(shù)的速度比ImageCopyResized()慢。

第47~49行:最終生成經(jīng)過處理后的圖片,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()

第51~56行:如果實(shí)際圖片的長寬小于規(guī)定生成的圖片長寬,則保持圖片原樣,同理,如果你需要生成GIF或PNG,你需要將imagejpeg()函數(shù)改成imagegif()或imagepng()。

特別說明:

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è)計(jì)有所幫助。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 临武县| 镇江市| 高雄市| 鄂伦春自治旗| 扎兰屯市| 娱乐| 中山市| 新民市| 邹平县| 昌都县| 尚志市| 大渡口区| 尖扎县| 自治县| 三台县| 克山县| 沽源县| 芒康县| 仙游县| 交口县| 南华县| 民县| 湛江市| 集贤县| 曲阳县| 洞头县| 宾川县| 房产| 乌兰浩特市| 牡丹江市| 翁牛特旗| 贵南县| 长乐市| 乳源| 鹿邑县| 隆尧县| 汶上县| 栖霞市| 新和县| 黄浦区| 子长县|