织梦DedeCMS生成多个不同尺寸缩略图

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

方法一:

DedeCMS5.7 的函数是在/include/helpers/文件夹中的 image.helper.php 里面。修改之前,一定要先对对应的文件进行备份,防止造成无法预料的程序错误。先找到如下的代码:

$srcW=ImageSX($im); 
$srcH=ImageSY($im); 
if($srcW<=$toW&&
$srcH<=$toH)returnTRUE; 
$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)returnTRUE;
$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,末尾增加

functionthumb($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_onceDEDEINC.'/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)’/]
免责声明:因为源码和模板等程序的特殊性,安装或者部署的同时需要一定的技术知识,请自行安装调试,本站不能所有提供的资源都提供安装帮助的,如遇到相关问题请自行解决,本站不提供退款和相应的免费解答服务!如有版权问题请联系QQ:2041966102 进行反馈PTcms、KYcms资源分享③
CMSbug- » 织梦DedeCMS生成多个不同尺寸缩略图

提供最优质的资源集合

立即查看 了解详情