图片水印功能概述
织梦CMS内置了图片水印功能,可以在上传到栏目的图片上自动添加文字水印或图片水印,有效保护网站原创图片内容不被盗用。水印设置可在系统层面和栏目层面进行配置。
一、系统级水印设置
进入 系统 > 系统基本参数 > 附件设置:
是否开启水印功能: 是 水印类型: 文字水印 / 图片水印 水印位置: 随机 / 左上 / 中上 / 右下等9个位置 水印图片路径: /images/watermark.png 水印文字: 网站域名 水印文字字体: /data/font/simhei.ttf 水印文字大小: 20px 水印文字颜色: #FFFFFF(白色半透明) 水印透明度: 50(0-100,100为完全不透明) JPEG水印质量: 85(0-100) 添加水印的最小图片尺寸: 200x200
二、栏目级水印设置
为不同栏目设置独立的水印策略:
- 进入
核心 > 栏目管理 - 点击目标栏目的"更改"
- 在"上传设置"中配置:
本栏目图片加水印: 是(继承系统设置)/ 否(不加水印) 水印类型: 使用系统设置 / 自定义 自定义水印文字: 本栏目的专属水印
三、通过修改源码实现栏目级水印定制
修改 include/helpers/upload.helper.php 中的水印函数:
<?php
function WaterImg($srcFile, $typeid=0){
global $cfg_water_type, $cfg_water_text;
// 根据栏目ID设置不同的水印
$waterConfigs=array(
3=> array('text'=>'新闻栏目', 'size'=>18),
5=> array('text'=>'产品中心', 'size'=>22),
8=> array('text'=>'VIP专享', 'size'=>16),
);
if(isset($waterConfigs[$typeid])){
$cfg_water_text=$waterConfigs[$typeid]['text'];
// 调整水印大小
}
// 继续执行现有的水印添加逻辑
// ...
}
?>
四、图片水印的处理代码
<?php
// 为已上传的图片添加水印
function AddWatermarkToImage($imagePath, $waterText, $position=9){
$imageInfo=getimagesize($imagePath);
$imageType=$imageInfo[2];
// 根据图片类型创建图像资源
switch($imageType){
case IMAGETYPE_JPEG: $im=imagecreatefromjpeg($imagePath); break;
case IMAGETYPE_PNG: $im=imagecreatefrompng($imagePath); break;
case IMAGETYPE_GIF: $im=imagecreatefromgif($imagePath); break;
}
$width=imagesx($im);
$height=imagesy($im);
// 文字颜色(白色半透明)
$color=imagecolorallocatealpha($im, 255, 255, 255, 60);
// 计算水印位置(右下角)
$x=$width - 200;
$y=$height - 40;
// 添加文字水印
imagettftext($im, 16, 0, $x, $y, $color,
'/data/font/simhei.ttf', $waterText);
// 保存图片
imagejpeg($im, $imagePath, 90);
imagedestroy($im);
}
?>
五、批量给现有图片加水印
<?php
// 批量为栏目下的文章图片添加水印
require_once(dirname(__FILE__)."/include/common.inc.php");
$typeid=3; // 目标栏目ID
// 获取栏目下所有文章的缩略图
$sql="SELECT id, litpic FROM dede_archives
WHERE typeid={$typeid} AND litpic !=''";
$dsql->SetQuery($sql);
$dsql->Execute();
while($row=$dsql->GetArray()){
$imgPath=dirname(__FILE__).$row['litpic'];
if(file_exists($imgPath)){
AddWatermarkToImage($imgPath, 'yourdomain.com', 9);
echo "已处理:{$row['litpic']}\n";
}
}
?>
水印建议:水印不宜过于显眼,否则会影响用户阅读体验。建议使用半透明效果(透明度30-50),字体大小适中。对于原创图片较多的栏目(如摄影、设计类),建议使用图片水印;对于文字内容为主的栏目,使用简单的文字水印即可。