织梦cms栏目水印设置

图片水印功能概述

织梦CMS内置了图片水印功能,可以在上传到栏目的图片上自动添加文字水印或图片水印,有效保护网站原创图片内容不被盗用。水印设置可在系统层面和栏目层面进行配置。

一、系统级水印设置

进入 系统 > 系统基本参数 > 附件设置

是否开启水印功能:      是
水印类型:              文字水印 / 图片水印
水印位置:              随机 / 左上 / 中上 / 右下等9个位置
水印图片路径:          /images/watermark.png
水印文字:              网站域名
水印文字字体:          /data/font/simhei.ttf
水印文字大小:          20px
水印文字颜色:          #FFFFFF(白色半透明)
水印透明度:            50(0-100,100为完全不透明)
JPEG水印质量:          85(0-100)
添加水印的最小图片尺寸: 200x200

二、栏目级水印设置

为不同栏目设置独立的水印策略:

  1. 进入 核心 > 栏目管理
  2. 点击目标栏目的"更改"
  3. "上传设置"中配置:
本栏目图片加水印:    是(继承系统设置)/ 否(不加水印)
水印类型:            使用系统设置 / 自定义
自定义水印文字:      本栏目的专属水印

三、通过修改源码实现栏目级水印定制

修改 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),字体大小适中。对于原创图片较多的栏目(如摄影、设计类),建议使用图片水印;对于文字内容为主的栏目,使用简单的文字水印即可。