核心原理
DedeCMS 的图片处理核心文件是 include/helpers/image.helper.php,控制水印开关、类型、位置等参数的配置文件是 config_update.php,我们修改这个文件,让它在处理上传图片时,读取配置并调用 image.helper.php 中的相应功能来添加水印。

第一步:定位并修改核心配置文件
-
找到文件 通过 FTP 或服务器文件管理器,登录您的网站根目录,找到以下文件:
dede/config_update.php -
编辑文件 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开
config_update.php文件。 -
找到关键代码段 在文件中搜索
waterMark关键字,您会找到类似下面的代码段(版本不同,代码行号可能略有差异,但结构相似):// 水印设置 $upfile_type = 'config'; $waterMarkEnable = 1; // 是否开启水印 (1:开启 0:关闭) $waterMarkType = 1; // 水印类型 (1:文字 2:图片) $waterMarkPos = 9; // 水印位置 (1:左上 2:中上 3:右上 4:左中 5:居中 6:右中 7:左下 8:中下 9:右下) $waterMarkImg = 'watermark.png'; // 水印图片 (当水印类型为图片时有效) $waterMarkText = 'DedeCMS'; // 水印文字 $waterMarkFont = '1.ttf'; // 字体文件 (需要提供支持中文的字体文件) $waterMarkFontColor = '#000000'; // 字体颜色 (十六进制) $waterMarkFontSize = 12; // 字体大小 $waterMarkAlpha = 50; // 水印透明度 (1-100) $waterMarkX = 10; // 水印横向边距 $waterMarkY = 10; // 水印纵向边距
-
修改参数 根据您的需求,修改以上参数的值。
(图片来源网络,侵删)$waterMarkEnable = 1;这是最重要的开关! 设置为1开启水印,设置为0则关闭所有水印功能。$waterMarkType = 1;水印类型。1为文字水印。2为图片水印。
$waterMarkPos = 9;水印位置。9代表右下角,这是最常用的位置,可以遮挡最少的内容。$waterMarkText = 'DedeCMS';(文字水印专用) 设置您想要显示的水印文字,如© 2025 Your Website。$waterMarkFont = '1.ttf';(文字水印专用) 指定字体文件,DedeCMS 默认可能不包含中文字体,您需要自己准备一个,通常使用simhei.ttf(黑体) 或simsun.ttf(宋体)。$waterMarkFontColor = '#FFFFFF';(文字水印专用) 字体颜色。#FFFFFF是白色,#000000是黑色,建议使用白色并配合透明度,以免图片太暗看不清。$waterMarkFontSize = 16;(文字水印专用) 字体大小,单位是像素。$waterMarkAlpha = 50;(文字水印专用) 透明度,范围 1-100,数值越低越透明。$waterMarkImg = 'watermark.png';(图片水印专用) 水印图片的文件名,请确保这个图片文件已经上传到网站的某个目录(通常是/images/或/uploads/)。$waterMarkX = 10;和$waterMarkY = 10;水印距离图片边缘的像素距离。
第二步:准备字体和图片文件
使用文字水印
- 下载中文字体文件
您需要找一个支持中文的 TrueType 字体文件(
.ttf),Windows 系统自带的有simhei.ttf(黑体) 和simsun.ttf(宋体)。 - 上传字体文件
将您选择的字体文件(
simhei.ttf)通过 FTP 上传到 DedeCMS 的某个目录,一个常见的做法是创建一个专门的字体目录,dede/fonts/simhei.ttf在config_update.php中,将$waterMarkFont的值修改为相对于网站根目录的路径:$waterMarkFont = 'dede/fonts/simhei.ttf';
使用图片水印
- 制作水印图片
使用 Photoshop 或其他图片编辑软件制作一张透明背景的 PNG 图片,一个半透明的 Logo 或者带有版权文字的图片,保存为
watermark.png。 - 上传水印图片
将制作好的
watermark.png图片上传到网站的某个目录,images/watermark.png在config_update.php中,将$waterMarkImg的值修改为这个路径:$waterMarkImg = 'images/watermark.png';
第三步:上传配置文件并测试
-
保存并上传 保存您修改好的
config_update.php文件,并重新上传到服务器上,覆盖原文件。 -
测试水印效果 这是最关键的一步,因为 DedeCMS 的水印机制是在图片首次被处理时添加的,而不是实时添加。
-
重新上传图片
- 进入 DedeCMS 后台。
- 发布一篇新文章,或者编辑一篇旧文章。
- 中点击“上传图片”按钮,上传一张新的图片。
- 上传成功后,这张图片会自动被打上水印。
- 在文章中预览,或者在网站前台查看这篇文章,检查水印是否按预期显示。
-
更新旧图片(不推荐,有风险)
(图片来源网络,侵删)- 进入后台的“文件管理器”。
- 找到一张已经上传过、但没有水印的图片。
- 对该图片进行“重命名”或“移动”操作,触发 DedeCMS 的文件更新机制。
- 然后在前台刷新文章页面,查看图片是否被重新处理并添加了水印。
注意: 此方法可能会导致图片路径变化,影响已发布的文章,请谨慎使用。
-
常见问题与解决方案 (FAQ)
Q1: 为什么我按照步骤做了,新上传的图片还是没有水印?
A1: 这是最常见的问题,通常由以下几个原因导致:
- 目录权限问题: DedeCMS 需要对上传图片的目录(如
/uploads/)有写入权限,请确保目录的权限是755或775。 - GD 库未开启: 水印功能依赖于 PHP 的 GD 库,请联系您的服务器空间商,确认 GD 库是否已安装并启用,您可以在
config_update.php中找到if(!function_exists('ImageCopyResampled'))这样的判断语句,GD 库未开启,这里会报错。 - 文件路径错误: 检查
config_update.php中字体文件或水印图片的路径是否正确,路径必须是相对于网站根目录的完整路径。 - 缓存问题: 清除浏览器缓存和 DedeCMS 的缓存,然后重新测试。
Q2: 水印图片太大或太小怎么办?
A2: 图片水印的大小是在 include/helpers/image.helper.php 文件中通过代码硬编码控制的,您可以打开这个文件,搜索 imagecopy 或 imagecopyresampled 相关代码,找到类似 $water_w 和 $water_h 的变量,修改它们的值来调整水印图片的显示尺寸,但这属于二次开发,需要一定的 PHP 基础。
Q3: 我想给不同栏目或不同用户设置不同的水印,可以吗?
A3: 默认的 config_update.php 是全局统一的,要实现差异化水印,需要进行二次开发,
- 修改
config_update.php,使其能从数据库中读取特定栏目或用户组的水印配置。 - 在发布文章或上传图片时,根据当前栏目或用户信息,动态加载对应的水印参数。
这超出了简单修改配置文件的范畴,通常需要定制开发。
为 DedeCMS 添加水印的核心就是修改 config_update.php,并确保字体/图片文件路径正确,最后通过重新上传图片来测试效果。
希望这份详细的指南能帮助您成功为网站图片添加水印!
