当前位置:网站首页 >  攻略

迅睿CMS图片上传自动添加文字水印完整详细配置与测试指南

时间:2026年06月15日 07:33:44 来源:易频IT社区

本文针对迅睿CMS(版本为V4.5.20+通用)的文字水印功能,从后台可视化配置代码级补充/修改特殊规则两个维度展开,覆盖上传前设置、上传后自动触发、触发条件筛选三大核心场景,看完可直接落地。

一、环境准备与前置检查

在操作前需完成3项必做检查,避免后续卡壳:

  • 检查PHP GD库:登录迅睿CMS后台→左侧“系统管理”→“系统工具”→“PHP信息”,搜索“gd”,确保GD Support显示Enabled,且FreeType Support显示Enabled(必须支持FreeType才能生成文字水印)
  • 上传默认中文字体:系统自带字体可能仅支持英文/数字,若需中文水印,需下载思源黑体或微软雅黑.ttf/.ttc格式文件,上传至/config/font/目录下(无该目录需手动创建,权限设为755)
  • 确认站点图片上传目录权限:目标上传目录(如/uploadfile/及其子目录)权限设为755,确保系统有写入水印后的图片权限

二、后台可视化配置通用文字水印

适用于90%以上的基础场景,无需写代码:

2.1 进入水印配置页面

登录后台→左侧“系统管理”→“附件管理”→“水印设置”(如果是多站点,需先切换到对应站点,点击页面顶部的站点切换下拉框)

2.2 开启水印功能并选择触发模式

  • 开启水印:勾选是否开启图片水印复选框
  • 触发条件:建议勾选图片上传时自动添加水印,可选图片缩略时自动添加水印(缩略图生成方式需同步开启,否则无效)
  • 图片格式限制:勾选jpgjpegpng(注意:png透明底会自动转为不透明白底,若需保留透明,需用代码补充特殊处理)
  • 图片尺寸限制:设置“最小宽度”“最小高度”为大于0的数值(例如均设为300),小于该尺寸的图片不添加水印,避免遮挡内容

2.3 配置文字水印核心参数

在“水印类型”下拉框选择文字,依次配置:

  • 水印文字:输入需要添加的内容,如“©202X 我的站点”,支持中英文、空格、特殊符号(但需字体支持)
  • 字体文件:下拉选择上传到/config/font/目录下的字体,若无则默认使用simhei.ttf(系统自带黑体,中文/英文/数字通用,但部分生僻字可能无法显示)
  • 字体大小:建议设为12-20像素(根据原图最小尺寸300调整,最小尺寸越大,字体可适当加大)
  • 字体颜色:点击颜色选择器,也可直接输入16进制颜色码(如白色ffffff、黑色000000、半透明灰色可设置为808080后调透明度)
  • 字体透明度:0-100之间的整数,数值越小越透明(建议设为30-50,既不影响阅读原图,又能起到防盗用效果)
  • 水印位置:点击9宫格选择对应位置(推荐右下角或中间偏下,避开原图核心内容)
  • 水印边距:设置左右/上下的边距(例如均设为20,避免水印贴在图片边缘)

2.4 保存并后台简单测试

配置完成后点击页面底部的“保存”按钮,然后进入“附件管理”→“上传附件”,上传一张大于300×300的jpg/png图片,上传成功后点击图片预览,确认水印是否正常显示。

三、代码级补充/修改特殊规则

如果后台可视化配置无法满足需求(如需要根据栏目分类设置不同水印、保留png透明底、添加动态时间水印),可通过修改核心代码实现(修改前请先备份对应文件,避免出错):

3.1 修改核心水印类

文字水印的核心逻辑在/system/helper/file.php文件的dr_file_watermark()函数中,可直接修改该函数。

3.2 场景1:根据栏目分类设置不同水印文字

迅睿CMS图片上传自动添加文字水印完整详细配置与测试指南

假设栏目ID为1的栏目水印文字是“©202X 技术博客”,栏目ID为2的栏目水印文字是“©202X 产品展示”,其他栏目用默认文字:

找到dr_file_watermark()函数中$text = $text ? $text : SITE_WATERMARK_TEXT;这一行,替换为:

```php // 获取上传时的栏目ID(从上传参数中获取,后台编辑器上传时会自动带catid,自定义表单需同步传catid) $catid = isset($_POST['catid']) ? intval($_POST['catid']) : (isset($_GET['catid']) ? intval($_GET['catid']) : 0); // 根据栏目ID设置不同水印文字 if ($catid == 1) { $text = '©202X 技术博客'; } elseif ($catid == 2) { $text = '©202X 产品展示'; } else { $text = $text ? $text : SITE_WATERMARK_TEXT; } ```

3.3 场景2:保留png图片的透明底

系统默认会将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; ```

3.4 场景3:添加动态时间水印

将水印文字修改为“©202X 我的站点 · Y-m-d H:i:s”格式的动态时间,找到dr_file_watermark()函数中设置$text的部分(可结合场景1使用),添加时间格式化代码:

```php // 保留之前的栏目ID判断逻辑 // ... // 在最终确定$text后添加动态时间替换 $text = str_replace('{time}', date('Y-m-d H:i:s'), $text); ```

然后在后台“水印设置”的“水印文字”中输入“©202X 我的站点 · {time}”即可。

四、完整测试流程

完成配置后,需进行全场景测试,确保功能正常:

  • 基础图片上传测试:上传jpg/jpeg/png三种格式、300×300以上/以下两种尺寸的图片各一张,检查水印是否自动添加、尺寸限制是否生效
  • 栏目分类测试:进入栏目ID为1、2和其他栏目的内容管理→编辑内容→上传图片,检查不同栏目的水印文字是否正确
  • png透明底测试:上传一张有透明区域的png图片,检查透明区域是否保留、水印是否正常显示
  • 动态时间测试:连续上传两张不同时间的图片,检查水印时间是否同步更新
  • 缩略图测试:若开启了缩略图水印,上传一张大尺寸图片,检查生成的所有缩略图是否都添加了水印

五、常见问题排查

  • 问题1:水印文字不显示:检查GD库的FreeType是否开启、字体文件是否存在且权限为755、字体文件是否支持当前水印文字、图片尺寸是否小于设置的最小尺寸
  • 问题2:png透明底变为白色:确认是否正确修改了/system/helper/file.php文件中处理png的部分,修改后是否刷新了缓存(登录后台→左侧“系统管理”→“系统工具”→“清除缓存”,勾选所有缓存后点击“清除”)
  • 问题3:自定义表单上传图片没有水印:检查自定义表单的上传字段是否同步传递了catid参数,或在表单提交逻辑中手动调用dr_file_watermark()函数
  • 问题4:水印位置偏移:调整“水印边距”参数,或修改dr_file_watermark()函数中计算水印坐标的代码段

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图