在使用Dedecms进行网站建设时,有时会遇到图片加水印后变形的问题。以下是解决这一问题的详细方法,确保代码修改前做好源码备份。
第一步:修改图片处理函数
定位到文件 `/include/image.func.php` 中的以下代码:
if($srcW <= $toW && $srcH <= $toH) return true;
这段代码大约位于第71行左右。在其下方添加以下代码:
if($srcW > $srcH){
$toWH = $toH / $toW;
$srcWH = $srcH / $srcW;
}
if(!$srcW > $srcH){
$toWH = $toW / $toH;
$srcWH = $srcW / $srcH;
}
此修改的核心在于根据图片的宽高比例进行缩放。如果图片宽度大于高度,则按设定的高度缩放;否则按设定的宽度缩放。这种设置特别适合正方形图片,但也可以根据实际需求调整。
第二步:修改网站模板CSS样式
接下来需要调整网站模板中的CSS样式。以一个示例为例,假设你的HTML结构如下:
对应的CSS样式可以这样设置:
.img_top2 {
border: 1px solid #CCCCCC;
height: 102px;
overflow: hidden;
padding: 3px;
width: 102px;
}
注意 `overflow: hidden;` 的作用是隐藏超出设定尺寸的部分,从而避免水印显示异常。
第三步:修改标签源码 arclist.lib.php
打开文件 `arclist.lib.php`,找到以下代码:
$row['image'] = "
<]", "", $row['title']) . "'>";
在此代码下方新增以下两行:
通过这种方式,调用时可以去除默认的宽高限制,显示原始尺寸的图片。调用代码如下:
{dede:arclist type=image. }
[field:imglink2/]
{/dede:arclist}
总结
以上方法解决了Dedecms中图片加水印后变形的问题。主要步骤包括修改图片处理函数、调整模板CSS样式以及更新标签源码。为防止意外情况,请务必在修改前备份源码。希望这些技巧能帮助你更好地优化网站内容展示效果。