模板定制,CMS二次开发
联系QQ:25778827

织梦缩略图最佳解决方案 生成多套不同尺寸的缩略图

第一种方案:适用于全站只需要一种尺寸的缩略图。

织梦DedeCMS缩略图生成方式都是采用缩小或拉伸的方式进行完整显示,如果使用的图片和缩略图所显示的比例不一致的话,会使得缩略图拉伸变形。解决的思路是对图片进行按宽或高进行放缩,超过缩略图大小的部分再进行裁剪,这样生成的缩略图的显示效果要比原来的要好得多了。不过因为是剪裁的,会造成有些图片重要的部分也被剪掉了,如果是图片站,有些图片一剪裁,手或者脚就“断”了,所以这个方法仅供大家参考一下。

如何解决织梦DedeCMS5.7缩略图变形的问题呢?还是修改织梦获取缩略图的函数。DedeCMS5.7的函数是在/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;
}

第二种方案:适用于全站需要多种尺寸的缩略图:

 

该种方法可以和上述结合使用,效果更好。

1、增加函数:打开include/extend.func.php,末尾增加

 

function thumb($imgurl, $width, $height, $bg = true) 
{ 
global $cfg_mainsite,$cfg_multi_site; 
$thumb = eregi("http://",$imgurl)?str_replace($cfg_mainsite,'',$imgurl):$imgurl; 
list($thumbname,$extname) = explode('.',$thumb); 
$newthumb = $thumbname.'_'.$width.'_'.$height.'.'.$extname; 
if(!$thumbname || !$extname || !file_exists(DEDEROOT.$thumb)) return $imgurl; 
if(!file_exists(DEDEROOT.$newthumb)) 
{ 
include_once DEDEINC.'/image.func.php'; 
if($bg==true) 
{ 
ImageResizeNew(DEDEROOT.$thumb, $width, $height, DEDEROOT.$newthumb); 
} 
else 
{ 
ImageResize(DEDEROOT.$thumb, $width, $height, DEDEROOT.$newthumb); 
} 
} 
return $cfg_multi_site=='Y'?$cfg_mainsite.$newthumb:$newthumb; 
}

2、后台设置:

说明:总的来说生成后的缩略图是由原图整体缩小后得到(这个部分是生成的原始缩略图),然后从上到下按照宽度裁切(这个部分是在原始缩略图的基础上再次裁切),如果你网站中不需要调用原始缩略图,同时需要三种规格的缩略图,那么你的缩略图总共会有4张,1张原始缩略图,3张你需要的尺寸。

设置:后台的附件管理中,缩略图生成的尺寸按照你网站中调取的规格,选择最宽的数值,最高的数值。

我的做法: 我网站需要四套尺寸,列表页面的主体区域是重点,需要191*258,还有230*172;  其它的是边栏和底部,173*129,和 204*153,非常的不规则;由于是以宽度为准,同时我需要前2套都比较正常,要是后台附件设置为 230*258 ,那么191*258这个将会有补白,不是理想的选择,  所以我按照 191*258这个尺寸的等比尺寸 230*311来作为全局的设置。 这样首选保证了我重点的2套,同时其它2套也不会变形,只是会被裁剪。

3、页面调用:

标签 : [field:picname function=’thumb(@me,$width,$height,$bg)’/]

参数说明: $width:缩略图宽度(整数) $height:缩略图高度(整数) $bg:是否用空白填补,默认自动填补,背景填充颜色在系统-附件设置里(true/false)

举例:调用长宽为100像素的缩略图:[field:picname function=’thumb(@me,100,100)’/]

保留原有比例,不自动填充(不建议):[field:picname function=’thumb(@me,100,100,false)’/]

未经允许不得转载:织梦二次开发,织梦模版开发 » 织梦缩略图最佳解决方案 生成多套不同尺寸的缩略图
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

广西商标注册 我们更专业 更快捷

联系我们联系我们