DedeCMS缩略图生成函数优化:实现居中裁剪而非原比例缩放

DedeCMS自动生成的缩略图片默认是根据自定义的最大长宽,按原比例缩小原图。这种方式在图片索引页排版时容易导致图片尺寸不统一,影响页面美观。许多站长不得不通过CSS自动判断调整高宽,但这种方法比较消耗服务器资源。因此,直接修改缩略图生成函数,实现居中裁剪效果,是更优的解决方案。

修改文件:image.func.php(或inc_photograph.php)

找到以下原始代码:

if($toWH<=$srcWH){
    $ftoW=$toW;
    $ftoH=$ftoW*($srcH/$srcW);
}
else{
    $ftoH=$toH;
    $ftoW=$ftoH*($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;
}

继续找到以下代码行:

($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH)

将其更改为:

($ni,$im,0,0,$src_X,$src_Y,$ftoW,$ftoH,$srcW,$srcH)

这一小改动的作用是:在原图中截取最大面积的、符合自定义缩略图长宽比例的部分,生成缩略图。从而实现居中裁剪效果,使所有缩略图尺寸统一,排版更整齐,同时避免CSS资源消耗。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。