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

首頁 > CMS > 織夢DEDE > 正文

織夢縮略圖終極解決辦法(不變形、居中裁剪)的三種方法

2024-07-12 09:08:20
字體:
供稿:網(wǎng)友

剛才我在做一個(gè)織夢站的時(shí)候出現(xiàn)了一個(gè)問題就是不管怎樣弄自動生成的縮略圖文件在列表里都是失真的,變形很嚴(yán)重特別影響美觀尤其是那種圖片特別長的或者是特別寬的主要元素不集中的圖片來說簡直就是災(zāi)難。

好了,下面的方法我們都用這張圖片來演示一下吧我們暫且叫它原圖:

織夢縮略圖終極解決辦法(不變形、居中裁剪)的三種方法

第一種方法:原生縮略圖不用動不用改生成的縮略圖

第二種方法:大眾方法縮略圖

操作流程:打開網(wǎng)站根目錄下的include/helpers/文件夾中的“image.helper.php”文件。

查找如下代碼:

$srcW=ImageSX($im);$srcH=ImageSY($im);if($srcW<=$toW && $srcH<=$toH )return TRUE;$toWH=$toW/$toH;$srcWH=$srcW/$srcH;if($toWH<=$srcWH){$ftoW=$toW;$ftoH=$ftoW*($srcH/$srcW);}else{$ftoH=$toH;$ftoW=$ftoH*($srcW/$srcH);}把上面的這些代碼全部替換成下面的代碼:$srcW=ImageSX($im);$srcH=ImageSY($im);if($srcW<=$toW && $srcH<=$toH )return TRUE;$toWH=$toW/$toH;$srcWH=$srcW/$srcH;$ftoH=$toH;$ftoW=$toW;if ($toWH<=$srcWH) {$src_Y = 0;$src_X = ($srcW-$srcH*$toWH)/2;$srcW = $srcH*$toWH;}else{$src_X = 0;$src_Y = ($srcH-$srcW/$toWH)/2;$srcH = $srcW/$toWH;}

把上面的這些代碼全部替換成下面的代碼:

$srcW=ImageSX($im);$srcH=ImageSY($im);if($srcW<=$toW && $srcH<=$toH )return TRUE;$toWH=$toW/$toH;$srcWH=$srcW/$srcH;$ftoH=$toH;$ftoW=$toW;if ($toWH<=$srcWH) {$src_Y = 0;$src_X = ($srcW-$srcH*$toWH)/2;$srcW = $srcH*$toWH;}else{$src_X = 0;$src_Y = ($srcH-$srcW/$toWH)/2;$srcH = $srcW/$toWH;}

上面的方法是超過縮略圖大小的部分就進(jìn)行裁剪如果說一張圖片高是1000像素但只有中間有點(diǎn)20像素的圖片則裁剪出來的縮略圖就是空白,它剪的是左上角的部分,原理是把一張?jiān)瓐D從左上角裁剪出織夢系統(tǒng)設(shè)置的高寬后其它的內(nèi)容全部扔掉??梢詫Ρ缺疚拈_頭的“原圖”和“第二種方法”縮略圖這兩張圖片。

 

第三種方法(強(qiáng)烈推薦):終極長寬高等比例自適應(yīng)裁剪縮略圖

操作流程:同方法二打開網(wǎng)站根目錄下的include/helpers/文件夾中的“image.helper.php”文件。查找“縮圖片自動生成函數(shù),來源支持bmp、gif、jpg、png”

看到了吧,在這些注釋的下面從以下代碼開始:

if ( ! function_exists('ImageResize'))

到“獲得GD的版本”這些注釋結(jié)束的所有內(nèi)容替換成下面的代碼(注意是除注釋外全部替換哦):

if ( ! function_exists('ImageResize')){ function ImageResize($srcFile,$toW,$toH,$toFile=""){global $cfg_photo_type;if($toFile==""){ $toFile = $srcFile;}$info = "";$srcInfo = GetImageSize($srcFile,$info);switch ($srcInfo[2]){ case 1: if(!$cfg_photo_type['gif']) { return false; } $im = imagecreatefromgif($srcFile); break; case 2: if(!$cfg_photo_type['jpeg']) { return false; } $im = imagecreatefromjpeg($srcFile); break; case 3: if(!$cfg_photo_type['png']) { return false; } $im = imagecreatefrompng($srcFile); break; case 6: if(!$cfg_photo_type['bmp']) { return false; } $im = imagecreatefromwbmp($srcFile); break;}$srcW=ImageSX($im);$srcH=ImageSY($im);if($srcW<=$toW && $srcH<=$toH ){ return true;}//縮略生成并裁剪$newW = $toH * $srcW / $srcH; $newH = $toW * $srcH / $srcW;if($newH >= $toH){ $ftoW = $toW; $ftoH = $newH;}else{ $ftoW = $newW; $ftoH = $toH;} if($srcW>$toW||$srcH>$toH){ if(function_exists("imagecreatetruecolor")) { @$ni = imagecreatetruecolor($ftoW,$ftoH); if($ni) { imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); } else { $ni=imagecreate($ftoW,$ftoH); imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); } } else { $ni=imagecreate($ftoW,$ftoH); imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); }//裁剪圖片成標(biāo)準(zhǔn)縮略圖$new_imgx = imagecreatetruecolor($toW,$toH);if($newH >= $toH){imagecopyresampled($new_imgx,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH);}else{imagecopyresampled($new_imgx,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH);}switch ($srcInfo[2]){ case 1: imagegif($new_imgx,$toFile); break; case 2: imagejpeg($new_imgx,$toFile,90); break; case 3: imagepng($new_imgx,$toFile); break; case 6: imagebmp($new_imgx,$toFile); break; default: return false;} imagedestroy($new_imgx); imagedestroy($ni);}imagedestroy($im);return true;}}

 

為了避免出錯下面給一個(gè)示例:

/*** 縮圖片自動生成函數(shù),來源支持bmp、gif、jpg、png* 但生成的小圖只用jpg或png格式** @access public* @param string $srcFile 圖片路徑* @param string $toW 轉(zhuǎn)換到的寬度* @param string $toH 轉(zhuǎn)換到的高度* @param string $toFile 輸出文件到* @return string*/(注意哦替換的是這里全部的內(nèi)容哦很長的一幾段內(nèi)容)/*** 獲得GD的版本** @access public* @return int*/

好了到此保存上傳然后試著生成一個(gè)縮略圖看看吧。到目前為止第三種方法是我見過最好的了它最大的特點(diǎn)就是居中裁剪這樣無論如何也不會變形了,而且一般圖片的主要像素都是從中間開始的,裁剪出來的縮略圖和原圖的中間部分都是一模一樣的只是把原圖中間變小了。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 老河口市| 庄河市| 神池县| 瓮安县| 闻喜县| 宕昌县| 邢台县| 大冶市| 图们市| 庆安县| 蚌埠市| 无锡市| 建瓯市| 滨州市| 江西省| 庄浪县| 安岳县| 平塘县| 南和县| 林州市| 越西县| 民和| 南和县| 晴隆县| 永春县| 宁陕县| 渭南市| 偃师市| 连州市| 昌乐县| 固始县| 绍兴县| 英吉沙县| 松桃| 百色市| 北安市| 渭源县| 东城区| 翼城县| 乐亭县| 修武县|