在使用DedeCMS时,系统默认只会生成一个规格的缩略图。然而,在实际应用中,不同页面可能需要不同大小和比例的缩略图。这往往会导致图片不清晰或失真。为了解决这一问题,我们可以采用以下方法,从而实现自定义尺寸的缩略图生成。
以下是具体的实现步骤:
第一步:设置足够大的原始缩略图
为了确保生成的缩略图清晰且不失真,首先需要保证原始缩略图足够大。进入DedeCMS后台,选择“系统-附件设置”,将“缩略图默认宽度”和“默认高度”设置为大于等于全站所有调用缩略图的最大尺寸。这样可以避免因原始图片过小而导致的模糊问题。
第二步:修改代码以支持动态生成缩略图
打开文件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;
}
第三步:调用自定义缩略图
完成上述设置后,可以通过标签调用不同尺寸的缩略图。具体调用方式如下:
标签:[field:picname function='thumb(@me,$width,$height,$bg)'/]
参数说明:
- $width:缩略图宽度(整数)
- $height:缩略图高度(整数)
- $bg:是否用空白填补,默认自动填补,背景填充颜色可在系统-附件设置中调整(true/false)
举例:
1. 调用长宽为100像素的缩略图:[field:picname function='thumb(@me,100,100)'/]
2. 保留原有比例,不自动填充(不建议使用):[field:picname function='thumb(@me,100,100,false)'/]
通过以上方法,您可以根据实际需求生成任意尺寸的缩略图,从而提升网站的视觉效果和用户体验。同时,这种方法也便于SEO优化,因为清晰的图片有助于提高网页加载速度和搜索引擎排名。