濮阳杆衣贸易有限公司

主頁(yè) > 網(wǎng)站建設(shè) > 建站知識(shí) > 織夢(mèng)DedeCMS實(shí)現(xiàn)縮略圖不拉伸變形的方法

織夢(mèng)DedeCMS實(shí)現(xiàn)縮略圖不拉伸變形的方法

POST TIME:2017-11-30 22:12

織夢(mèng)cms目前幾個(gè)最新版本的縮略圖生成方式都是采用縮小或拉伸的方式進(jìn)行完整顯示,如果使用的圖片和縮略圖所顯示的比例不一致的話,會(huì)使得縮略圖拉伸變形。如果不改變織夢(mèng)目前的縮略圖顯示方式的話,又想縮略圖不拉伸變形顯示,就得制作一個(gè)和顯示縮略圖位置大小一致或者圖片比例一致且大于縮略圖的分辨率就會(huì)不拉伸變形了。

我們可以通過(guò)下面方法修改實(shí)現(xiàn),對(duì)圖片進(jìn)行按寬或高進(jìn)行放縮,超過(guò)縮略圖大小的部分再進(jìn)行裁剪,這樣生成的縮略圖的顯示效果要比原來(lái)的要好得多了。同時(shí)也可以采取之際制作好分辨率一致的縮略圖進(jìn)行顯示。

于是重新修改了一下DedeCms v5.6縮略圖生成方法。

默認(rèn)dedecms5.6默認(rèn)生成的縮略圖,縮略圖大小設(shè)置為:100*100(直接把圖片縮小了)

看起來(lái)很不美觀,影響了圖片的觀賞性

DedeCMS v5.6縮略圖裁剪優(yōu)化方法

修改如下:
打開(kāi)/includes/image.func.php文件,
//縮圖片自動(dòng)生成函數(shù),來(lái)源支持bmp、gif、jpg、png
//但生成的小圖只用jpg或png格式
找到代碼第44行function ImageResize

//獲得GD的版本之間的代碼,用如下的代碼覆蓋(大家請(qǐng)注意備份)。

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,85);
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;
}



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
鄂温| 名山县| 开化县| 仙游县| 都昌县| 武平县| 东宁县| 彰武县| 海晏县| 莱州市| 商都县| 会宁县| 惠州市| 竹溪县| 罗江县| 建昌县| 电白县| 锡林郭勒盟| 拜城县| 调兵山市| 蓬莱市| 乐山市| 隆回县| 清远市| 阜南县| 洪雅县| 阳谷县| 茶陵县| 涡阳县| 讷河市| 商南县| 大渡口区| 丁青县| 滨海县| 寻甸| 新乡县| 巴彦淖尔市| 清涧县| 恭城| 房产| 东乌珠穆沁旗|