本文针对迅睿CMS(版本为V4.5.20+通用)的文字水印功能,从后台可视化配置、代码级补充/修改特殊规则两个维度展开,覆盖上传前设置、上传后自动触发、触发条件筛选三大核心场景,看完可直接落地。
在操作前需完成3项必做检查,避免后续卡壳:
GD Support显示Enabled,且FreeType Support显示Enabled(必须支持FreeType才能生成文字水印)/config/font/目录下(无该目录需手动创建,权限设为755)/uploadfile/及其子目录)权限设为755,确保系统有写入水印后的图片权限适用于90%以上的基础场景,无需写代码:
登录后台→左侧“系统管理”→“附件管理”→“水印设置”(如果是多站点,需先切换到对应站点,点击页面顶部的站点切换下拉框)
是否开启图片水印复选框图片上传时自动添加水印,可选图片缩略时自动添加水印(缩略图生成方式需同步开启,否则无效)jpg、jpeg、png(注意:png透明底会自动转为不透明白底,若需保留透明,需用代码补充特殊处理)在“水印类型”下拉框选择文字,依次配置:
/config/font/目录下的字体,若无则默认使用simhei.ttf(系统自带黑体,中文/英文/数字通用,但部分生僻字可能无法显示)ffffff、黑色000000、半透明灰色可设置为808080后调透明度)配置完成后点击页面底部的“保存”按钮,然后进入“附件管理”→“上传附件”,上传一张大于300×300的jpg/png图片,上传成功后点击图片预览,确认水印是否正常显示。
如果后台可视化配置无法满足需求(如需要根据栏目分类设置不同水印、保留png透明底、添加动态时间水印),可通过修改核心代码实现(修改前请先备份对应文件,避免出错):
文字水印的核心逻辑在/system/helper/file.php文件的dr_file_watermark()函数中,可直接修改该函数。

假设栏目ID为1的栏目水印文字是“©202X 技术博客”,栏目ID为2的栏目水印文字是“©202X 产品展示”,其他栏目用默认文字:
找到dr_file_watermark()函数中$text = $text ? $text : SITE_WATERMARK_TEXT;这一行,替换为:
系统默认会将png透明底转为不透明白底,修改dr_file_watermark()函数中处理png的部分:
找到函数中类似下面的代码段(大约在1200行左右,不同版本略有差异):
```php case 3: // png $image = imagecreatefrompng($file); imagesavealpha($image, false); // 系统默认关闭透明保存 imagealphablending($image, false); break; ```替换为:
```php case 3: // png $image = imagecreatefrompng($file); imagesavealpha($image, true); // 开启透明保存 imagealphablending($image, false); // 先关闭混合模式,创建透明画布 // 重新创建一个支持透明的画布 $width = imagesx($image); $height = imagesy($image); $new_image = imagecreatetruecolor($width, $height); $transparency = imagecolorallocatealpha($new_image, 0, 0, 0, 127); imagefill($new_image, 0, 0, $transparency); imagecopy($new_image, $image, 0, 0, 0, 0, $width, $height); imagedestroy($image); $image = $new_image; imagealphablending($image, true); // 打开混合模式,准备绘制水印 break; ```将水印文字修改为“©202X 我的站点 · Y-m-d H:i:s”格式的动态时间,找到dr_file_watermark()函数中设置$text的部分(可结合场景1使用),添加时间格式化代码:
然后在后台“水印设置”的“水印文字”中输入“©202X 我的站点 · {time}”即可。
完成配置后,需进行全场景测试,确保功能正常:
/system/helper/file.php文件中处理png的部分,修改后是否刷新了缓存(登录后台→左侧“系统管理”→“系统工具”→“清除缓存”,勾选所有缓存后点击“清除”)catid参数,或在表单提交逻辑中手动调用dr_file_watermark()函数dr_file_watermark()函数中计算水印坐标的代码段上一篇: 迅睿CMS伪静态失效修复方法
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图